promise实现原理(四)promise.all与promise.race
###promise原理系列目录:
promise实现原理(四)promise.all与promise.race
promise实现原理(五)promise.allSettled与promise.any
promise实现原理(六)promise.resolve与promise.reject
还缺失的内容↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓1
2
3
4
5
6
7
8
9
10//标准提到,一个promise只有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)//已完成
Promise.prototype.then(); //已完成
Promise.prototype.catch(); //已完成
Promise.prototype.finally(); //已完成
Promise.all();
Promise.race();
Promise.allSettled();
Promise.any();
Promise.resolve();
Promise.reject();
#Promise.prototype.all()
据官方文档所知:
Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。子Promise全部完成时,触发.then
Promise.all([p1,p2,p3])
Promise.all应传入一个数组,数组对象均为Promise对象,当Promise.all中,所有的promise对象均出现结果后才会执行.all中的.then回调,我们尝试写一下
1 | myPromise.all = function(promiseArr=[]){ |
按照原理,每一个子promise进行resolve后,都会判断是否已完成了所有的promise,已完成则返回一个新的resolve状态的Promise,来完成接下来应该.then的事情
这样就完成了Promise.all的功能了
#Promise.prototype.race()
据官方文档所知:
Promise.race()方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。子Promise中任意一个Promise完成时,就触发.then
同样的,在.all方法中,修改一下执行.then的条件即可
1 | myPromise.race = function(promiseArr=[]){ |
这样就完成了Promise.race的功能了
截止此张,已完成了Promise方法中一半功能的原理了
原文作者: IT梅
原文链接: http://www.meixiaohan.com/2019/07/07/promise实现原理(四)promise.all与promise.race/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)