javascript - promise中调用reject,后面的then方法还会执行?

查看:1438
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆