JavaScript返回承诺来自函数 - 承诺链与变量



这两种方式从函数返回承诺的方式

是否有区别
var promise;
promise = callAsync();
promise.then(doSomething).then(doSomethingElse);
return promise;

vs

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

我认为这两种方法都是相同的,但是在摩卡测试案例中,只有第二种方法正在起作用。

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

return promise;

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

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

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

第一个承诺仅是监视callAsync()。它与其他.then()处理程序中发生的事情无关。理解.then()的关键是它返回了一个新的承诺,正是由.then()处理程序中发生的事情影响的新承诺。

有关更多信息,请阅读以下答案:Promise..then.then vs Promise.then之间是否有区别;承诺,然后了解链接和分支之间的区别。

最新更新