Javascript从函数返回Promise - promise chain vs variable

时间:2017-03-11 06:15:07

标签: javascript promise mocha

从功能

返回承诺的这两种方式之间是否存在差异?
var promise;
promise = callAsync();
promise.then(doSomething).then(doSomethingElse);
return promise;

VS

var promise;
promise = callAsync();
return promise.then(doSomething).then(doSomethingElse);

我认为两种方法都是相同的,但在摩卡测试案例中,只有第二种方法可行。

1 个答案:

答案 0 :(得分:4)

他们当然不一样。每个.then()都会返回一个新的承诺。所以,

return promise;

正在返回原始承诺,但是:

return promise.then(doSomething).then(doSomethingElse);

返回一个新的promise,它是调用两个.then()方法的结果。不同之处在于后者正在返回受这些.then()方法中调用的函数影响的promise,而第一个promise只受callAsync()的影响而与其他.then()无关。 1}}处理程序。

第一个承诺只是监控callAsync()。它与其他.then()处理程序中发生的事情完全无关。理解.then()的关键在于它返回一个新的承诺,这是受.then()处理程序中发生的事情影响的新承诺。

有关详细信息,请阅读以下答案:Is there a difference between promise.then.then vs promise.then; promise.then以了解链接和分支之间的区别。