实现一个Promise

class Promise{
constructor ( fn){
const _this = this;
//声明一个等待的队列(重点)
this. _queue = [];
this. _succ_res = null;
this. _error_res = null;
this. status = "";
fn( function(... arg){
_this. _succ_res = arg;
_this. status = "success";
_this. _queue. forEach( json => {
json. fn1(... arg);
});
}, function(... arg){
_this. _error_res = arg;
_this. status = "error";
_this. _queue. forEach( json => {
json. fn2(... arg);
})
})
}
then( fn1, fn2){
if( this. status == "success"){
fn1( this. _succ_res);
} else if( this. status == "error") {
fn2( this. _error_res);
} else {
this. _queue. push({ fn1, fn2});
}
}
}

Promise. all = function ( arr){
let resArr = [];
return new Promise(( resovle, reject) => {
let i = 0;
next();
function next(){
arr[ i]. then( res =>{
resArr. push( res);

i++
if( i == res. length) {
resolve( resArr);
} else {
next();
}
}, error =>{
reject( error);
})
}
})
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值