Pending(进行中)、Fulfilled(已成功)、Rejected(已失败)
- new Promise((resolve,reject)=>{...})
- .then(success=>{...})
- .catch(error=>{...})
- .finally(()=>{...});
-
- Promise.resolve();
- Promise.reject();
-
- Promise.all();
- Promise.race();
-
- 复制代码
1.then(success=>{},error=>{})中的error回调可以捕获reject结果,但是不能捕获success回调函数中的异常,所以我们推荐使用catch()函数捕获reject结果
2.then().then()的调用链中return 新的promise对象会导致执行顺序的改变,如:
- const p1 = new Promise((resolve, reject) => {
- console.log('promise1');//1
- resolve();
- })
- .then(() => {
- console.log('then11');//3
- new Promise((resolve, reject) => {
- console.log('promise2');//4
- resolve();
- })
- .then(() => {
- console.log('then21');//6
- })
- .then(() => {
- console.log('then23');//8
- });
- })
- .then(() => {
- console.log('then12');//7
- });
-
- const p2 = new Promise((resolve, reject) => {
- console.log('promise3');//2
- resolve();
- }).then(() => {
- console.log('then31');//5
- });
-
-
- const p1 = new Promise((resolve, reject) => {
- console.log('promise1'); // 1
- resolve();
- })
- .then(() => {
- console.log('then11'); // 2
- return new Promise((resolve, reject) => {
- console.log('promise2'); // 3
- resolve();
- })
- .then(() => {
- console.log('then21'); // 4
- })
- .then(() => {
- console.log('then23'); // 5
- });
- })
- .then(() => {
- console.log('then12'); //6
- });
- 复制代码
3.promise.then()期望参数是一个函数,如果不是函数就会发生值透传。就算发生了透传,promise.then()中的代码依旧也是会执行的。
从一道让我失眠的 Promise 面试题开始,深入分析 Promise 实现细节
Promise.any 的作用,如何自己实现一个 Promise.any
Promise.allSettled 的作用,如何自己实现一个 Promise.allSettled
【建议星星】要就来45道Promise面试题一次爽到底(1.1w字用心整理)
Promise不会??看这里!!!史上最通俗易懂的Promise!!!
Promise 被玩出 48 种“花样”,深度解析10个常用模块
-------------------------------------------------------------------------------
[译]JavaScript: Promises 介绍及为何 Async/Await 最终取得胜利
嘿,不要给 async 函数写那么多 try/catch 了
-----------------------------------------------------------------------------------
RxJS——给你如丝一般顺滑的编程体验(篇幅较长,建议收藏)