Promise的catch()函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise的catch()函数相关的知识,希望对你有一定的参考价值。

参考技术A Promise的catch()函数

运行结果

因为Promise的reject没有被处理。

例子2:

再运行

如果不管异常内容,直接丢弃异常,可以这样处理:

运行结果

我们看到在catch()里面返回一个resolved(通过return语句实现)的Promise可以被后面的then()函数继续处理。

例子2

运行

我们看到在catch()里面返回一个rejected(通过throw语句实现)的Promise可以被后面的catch()函数继续处理。

对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的catch()函数的主要内容,如果未能解决你的问题,请参考以下文章

Javascript:如何将其他变量传递给promise .catch函数

promise,async await,try catch的问题整理

Promise中的then第二个参数和catch有什么区别?

Promise_05then和catch构造函数

Vue- Promise函数---参数resolve(调用.then方法)-- 参数reject(调用.catch方法)---链式结构

Promise.then(a, b) 和 Promise.then(a).catch(b) 一样吗? [复制]