对Promise中的resolve,reject,catch理解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对Promise中的resolve,reject,catch理解相关的知识,希望对你有一定的参考价值。
参考技术A 我们先构建一个Promise类似构建对象,使用new来构建一个Promise。Promise接受一个「函数」作为参数,该函数的两个参数分别是resolve和reject。这两个函数就是就是「回调函数」,由javascript引擎提供。
Promise实例生成以后,可以用then方法指定resolved状态和reject状态的回调函数。
then方法会返回一个Promise。它有两个参数,分别为Promise从pending变为fulfilled和rejected时的回调函数(第二个参数非必选)。这两个函数都接受Promise对象传出的值作为参数。
该方法是.then(undefined, onRejected)的别名,用于指定发生错误时的回调函数。
promise 对象的错误,会一直向后传递,直到被捕获。即错误总会被下一个catch所捕获。then方法指定的回调函数,若抛出错误,也会被下一个 catch 捕获。 catch 中也能抛错,则需要后面的 catch 来捕获。
promise 一旦 resolve 了再抛错,也不会变为 rejected ,就不会被 catch 了。
结果:
then中没有第二个回调的情况
结果:
结果:
不会进入catch的情况,只要resolve了,就算抛出err,也不会进入catch
结果:
以上是关于对Promise中的resolve,reject,catch理解的主要内容,如果未能解决你的问题,请参考以下文章
JS中的promise返回的resolve()和reject()的理解附代码展示
Vue- Promise函数---参数resolve(调用.then方法)-- 参数reject(调用.catch方法)---链式结构
Promise静态方法实现(all race finally resolve reject)