javascript - promise中调用reject,后面的then方法还会执行?
本文介绍了javascript - promise中调用reject,后面的then方法还会执行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
多个异步操作,如果中间出现reject后面应该不会再执行,
为什么下面代码中第二个then函数还会执行?
function getJson(idx){
return new Promise(function(resolve,reject){
setTimeout(function(){
var random = Math.floor(Math.random() * 1000);
console.log('success'+random);
reject(random);
},1000)
})
}
getJson(13).then(function(){
return getJson(14);
},function(){
console.log(arguments)
return "adas";
}).then(function(){
return getJson(15);
}).then(function(){
return getJson(16);
})
解决方案
then 返回一个由输入函数确定的Promise:
如果 onFulfilled 或者 onRejected 抛出一个错误,或者返回一个拒绝的 Promise ,then 返回一个 >rejected Promise。
如果 onFulfilled 或者 onRejected 返回一个 resolves Promise,或者返回任何其他值,then 返回一个 >resolved Promise。
https://developer.mozilla.org...返回值
第一个then执行onRejected,返回一个resolved Promise,第二个then执行,但是第二个then没有onRejected,所以简单地采用 Promise 的拒绝状态
这篇关于javascript - promise中调用reject,后面的then方法还会执行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文