Open taoliujun opened 1 year ago
Promise是业务开发中使用率最高的ES6方法了,但日常容易忽略几个点,以及记不得它几个方法的区别,现记录。
catch
then
try...catch
rejected
all
{status: 'fulfilled', value: value}
{status: 'rejected', reason: reason}
AggregateError
AggregateError封装了Error数组,它的结构是:
AggregateError(errors[, message])
AggregateError()构造函数可以接受两个参数。
AggregateError()
欢迎大家在此讨论
Promise是业务开发中使用率最高的ES6方法了,但日常容易忽略几个点,以及记不得它几个方法的区别,现记录。
容易忽略的点
catch
是then
的语法糖,但是catch
可以捕获then
中的异常,而then
的第二个回调函数不行。catch
捕获错误,那么Promise的错误不会传递到外层,即使外层有try...catch
也捕获不到。catch
捕获了rejected
且返回新的实例,所以在all
等方法中,p1实现了catch
方法,则p1的rejected
不会触发p的catch
。几个方法的区别
{status: 'fulfilled', value: value}
或者
{status: 'rejected', reason: reason}
catch
的是一个AggregateError
实例