promise.all 中任何一个promise 出现错误的时候都会执行reject,
导致其它正常返回的数据也无法使用了
有两个解决方法:
1.全部改为串行调用(失去了node 并发优势)
2.当promise捕获到error 的时候,代码吃掉这个异常,返回resolve,约定特殊格式表示这个调用成功了
var p1 =new Promise(function(resolve,reject){
setTimeout(function(){
resolve(1);
},0)
});
var p2 = new Promise(function(resolve,reject){
setTimeout(function(){
resolve(2);
},200)
});
var p3 = new Promise(function(resolve,reject){
setTimeout(function(){
try{
console.log(XX.BBB);
}
catch(exp){
resolve("error");
}
},100)
});
Promise.all([p1, p2, p3]).then(function (results) {
console.log("success")
console.log(results);
}).catch(function(r){
console.log("err");
console.log(r);
});
点赞 1
收藏
分享
ISaiSai
发布了401 篇原创文章 · 获赞 130 · 访问量 242万+
他的留言板
关注
————————————————
版权声明:本文为CSDN博主「ISaiSai」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/isaisai/article/details/48437091
来源:https://www.cnblogs.com/sexintercourse/p/12423691.html