- 使用
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的时候,将大块的处理分成小函数来实现是一个非常好的实践。
-