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

gar*_*ryx 13 promise angularjs

我想知道下面两个有区别吗?

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

工作流程会改变吗?

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

jfr*_*d00 31

你问过"链接""分支".

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

  1. 它序列化fn1,fn2因此fn2在返回的promise之后才会被调用fn1.
  2. .catch()适用于fn1或中的错误fn2
  3. fn2如果fn1拒绝,将不会被调用.

对于选项2:

  1. fn2不等待fn1解决. fn2只要fn1返回类似于,就会调用fn1(); fn2();.这意味着异步操作由同时启动fn1并且fn2将同时进行(有时称为并行运行而不是串行运行).
  2. 这两个.catch()都不适用,因为它不在任何一个.then()调用创建的promise上.
  3. 双方fn1fn2将于要么不管错误的调用.

另一个相关的问题/答案:理解javascript承诺; 堆叠和链接