promise中第二个任务reject后catch没有捕获到的问题
代码如下,要怎样才可以在尾部catch能捕获前面任何一个任务的reject?
var task1 = new Promise(function(resolve, reject){
resolve('success');
});
var task2 = new Promise(function(resolve, reject){
reject('error');
});
task1.then(task2)
.catch(function(error) {
console.log('catched:', error);
});
报 VM266:5 Uncaught (in promise) error
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
补充一点, 如果你的任务是并行运行的, 没有依赖关系的话,应该用
Promise.all
.then
的参数是函数,而task2
是一个Promise对象,你后面肯定catch不了呀因为你
task2
这个promise
抛出了错误但是却没有catch
函数对它进行捕获,如果task1
和task2
对调,或者把task2
里面的reject(error)
改成resolve
,应该就不会报错了。reject的promise必须跟catch来捕捉失败的情况,不然会报错
这样也可以