小编典典

然后,promise.then.then和promise.then之间是有区别的;promise.then

angularjs

我想知道以下两个之间有区别吗?

  1. aPromiseObj.then(fn1).then(fn2).catch(fn3);
  2. aPromiseObj.then(fn1); aPromiseObj.then(fn2); aPromiseObj.catch(fn3);

工作流程会改变吗?

ps:虽然我想更广泛地考虑这一点,但我处于有偏见的环境中。


阅读 778

收藏
2020-07-04

共1个答案

小编典典

您已经问过 “链接”“分支”

假设f1并且f2表示返回诺言的异步操作,是的,两者之间存在显着差异。对于选项1:

  1. 它进行序列化fn1fn2因此fn2直到fn1解决了返回的promise后才调用它。
  2. .catch()适用于fn1或中的错误fn2
  3. fn2如果fn1拒绝,则不会调用。

对于选项2:

  1. fn2不等待fn1解决。 fn2一旦fn1返回类似于的,就会被调用fn1(); fn2();。这意味着异步操作由同时开始fn1fn2同时进行(有时称为并行运行而不是串行运行)。
  2. .catch(),因为它不是由要么创建的承诺并不适用于任何.then()电话。
  3. 双方fn1fn2会在任何的错误而不考虑调用。
2020-07-04