我想知道以下两个之间是否存在差异?
aPromiseObj.then(fn1).then(fn2).catch(fn3);
aPromiseObj.then(fn1); aPromiseObj.then(fn2); aPromiseObj.catch(fn3);
工作流程会改变吗?
ps:我处于有条不紊的环境中,虽然我想从更广泛的角度来思考这个问题。答案 0 :(得分:30)
您询问“链接”与“分支”。
假设f1
和f2
表示返回promises的异步操作,是的,存在显着差异。对于选项1:
fn1
和fn2
,以便在fn2
返回的承诺得到解决后才会调用fn1
。 .catch()
适用于fn1
或fn2
fn2
拒绝,则不会调用fn1
。对于选项2:
fn2
不等待fn1
解决。只要fn2
返回类似于fn1
,就会调用fn1(); fn2();
。这意味着fn1
和fn2
启动的异步操作将同时进行(有时称为并行运行而不是串行运行)。.catch()
不适用于任何一个,因为它不在.then()
来电之间创建的承诺上。fn1
和fn2
。另一个相关的问题/答案:Understanding javascript promises; stacks and chaining