promise.then.then与promise.then之间有区别吗? promise.then

时间:2015-08-26 01:31:16

标签: angularjs promise

我想知道以下两个之间是否存在差异?

  1. aPromiseObj.then(fn1).then(fn2).catch(fn3);
  2. aPromiseObj.then(fn1); aPromiseObj.then(fn2); aPromiseObj.catch(fn3);
  3. 工作流程会改变吗?

    ps:我处于有条不紊的环境中,虽然我想从更广泛的角度来思考这个问题。

1 个答案:

答案 0 :(得分:30)

您询问“链接”“分支”

假设f1f2表示返回promises的异步操作,是的,存在显着差异。对于选项1:

  1. 序列化fn1fn2,以便在fn2返回的承诺得到解决后才会调用fn1
  2. .catch()适用于fn1fn2
  3. 中的错误 如果fn2拒绝,则不会调用
  4. fn1
  5. 对于选项2:

    1. fn2不等待fn1解决。只要fn2返回类似于fn1,就会调用fn1(); fn2();。这意味着fn1fn2启动的异步操作将同时进行(有时称为并行运行而不是串行运行)。
    2. .catch()不适用于任何一个,因为它不在.then()来电之间创建的承诺上。
    3. 无论是否有任何错误,都会调用fn1fn2
    4. 另一个相关的问题/答案:Understanding javascript promises; stacks and chaining