Promise 的三种状态,以及then、catch的链式调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise 的三种状态,以及then、catch的链式调用相关的知识,希望对你有一定的参考价值。

参考技术A

promise的三种状态:pending resolved rejected
1)pending:在过程中,没有结果,不会触发then和catch
2)resolved:已经解决,触发then
3)rejected:已经拒绝,触发catch

resolved状态 reject状态

then和catch状态改变
then正常返回resolved,里面有报错返回rejected
catch正常返回resolved,里面有报错返回rejected

resolve---->then
then 中是一个正常return ,得到resolve ,可以继续执行 .then里面的内容
then 中是一个throw error,得到reject,不能执行后面的 .then
rejected---->catch
catch 中是一个正常return ,得到resolve可以继续执行 .then里面的内容
catch 中是一个error,得到reject ,不能执行后面的 .then,可以执行catch

eg1

结果 1 3
第一个then中成功了,就相当于得到了一个resolve,resolve执行then,不执行catch,2不执行,3执行

eg2

结果 1 2 3
第一个then中有throw err 出错了,相当于reject,reject执行catch,所以catch里面的内容正常执行,catch正常执行了,相当于resolve,resolve会执行then

eg3

结果 1 2
第一个then执行,里面有err ,相当于reject,执行catch,catch成功执行了,相当于resolved,执行then,不执行catch,所以2执行,3不执行

以上是关于Promise 的三种状态,以及then、catch的链式调用的主要内容,如果未能解决你的问题,请参考以下文章

promise的学习

Promise 状态的表现与变化以及执行顺序

Promise 状态的表现与变化以及执行顺序

解决异步问题,教你如何写出优雅的promise和async/await,告别callback回调地狱!

promise

js的异步加载及promise的三种状态