这两种方式从函数返回承诺的方式
是否有区别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之间是否有区别;承诺,然后了解链接和分支之间的区别。