Promise的特性
Posted →_→空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise的特性相关的知识,希望对你有一定的参考价值。
Promise.all() 有什么特性
将多个promise实例包装成一个新的promise实例,成功返回一个结果数组,失败返回第一个reject的值。
成功:传一个数组,里面都是promise,(也可以不是promise,也可以是常量)
失败:其中一个执行报错,会返回到catch,其他的promise还是会执行,因为他在创建,实例化的时候就执行了。
手写promise.all()
//promise.all()依然返回一个新的promise
function PromiseAll(promiseArray){
return new Promise((resolve,reject)=>{
if(!Array.isArray(promiseArray)){//判断是否是数组
return reject(new Error(\'传入的参数必须是参数\'))
}
const res=[];
let count=0;//计时器
for(let i=0;i<promiseArray.length;i++){
//返回的数组不一定全是promise,需要进行判断,promise.resolve会自动将参数包装成一个promise
Promise.resolve(promiseArray[i]).then(value=>{
count++;
res[i]=value;
//count的作用 如果直接push,因为promise顺序不同,会导致乱序
//js数组的特性,res[6]=\'xxx\' 则res.length=7;因此res.length并不准确
if(count===promiseArray.length){
resolve(res)
}
}).catch(e=>{
reject(e)
})
}
})
}
以上是关于Promise的特性的主要内容,如果未能解决你的问题,请参考以下文章