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有什么区别?
Vue- Promise函数---参数resolve(调用.then方法)-- 参数reject(调用.catch方法)---链式结构