- 使用
promise.then(onFulfilled, onRejected)
的话,在onFulfilled
中发生异常的话,在onRejected
中是捕获不到这个异常的。 - 在
promise.then(onFulfilled).catch(onRejected)
的情况下,then
中产生的异常能在.catch
中捕获。 .then
和.catch
在本质上是没有区别的,但需要分场合使用。.then
和.catch 中指定的方法调用时异步进行的。
- 传给 promise.all 的promise并不是一个个顺序执行的,而是同时开始,并行执行的。
- 为了避免上述中同时使用同步、异步调用可能引起的混乱问题,Promise在规范上规定 Promise只能使用异步调用方式 。
Promise.race
在第一个promise对象变为Fulfilled之后,并不会取消其他promise对象的执行。- 使用
reject
会比使用throw
安全,在then
中使用reject的方法。 -
在Promise中,我们可以选择多种方法来实现处理的按顺序执行。
-
循环使用then调用的方法
-
使用for循环的方法
-
使用reduce的方法
-
分离出顺序处理函数的方法
但是,这些方法都是基于JavaScript中对数组及进行操作的for循环或
forEach
等,本质上并无大区别。因此从一定程度上来说,在处理Promise的时候,将大块的处理分成小函数来实现是一个非常好的实践。
-