定义一个Promise.first,有成功则返回第一个,如果都失败,则返回定义的all reject
if(!Promise.first){
Promise.first=function(prs){
return new Promise(function(resolve,reject){
//循环所有Promise
prs.forEach(function(pr){
Promise.resolve(pr)
.then(resolve)
.catch(function(e){
console.log('it is err:%s',e);
})
});
Promise.resolve('all reject').then(reject);
});
}
}
用法:
1.全是成功的情况,或者有某个reject
var p1=Promise.resolve(20);
var p2=Promise.resolve(30);
var p3=Promise.resolve(60);
Promise.first([p1,p2,p3]).then(function(result){
console.log('result:%s',result);
})
.catch(function(e){
console.log('e=%s',e);
});
输出:result:20
2.全是失败的情况
var p1=Promise.reject(20);
var p2=Promise.reject(30);
var p3=Promise.reject(60);
Promise.first([p1,p2,p3]).then(function(result){
console.log('result:%s',result);
})
.catch(function(e){
console.log('e=%s',e);
});
输出:e=all reject