这两种从函数返回promise的方式之间有区别吗
var promise;
promise = callAsync();
promise.then(doSomething).then(doSomethingElse);
return promise;
与
var promise;
promise = callAsync();
return promise.then(doSomething).then(doSomethingElse);
我认为这两种方法是相同的,但是在mocha测试用例中,只有第二种方法有效。
他们当然是不一样的。每个都.then()
返回一个新的承诺。所以,
return promise;
返回了最初的承诺,但是:
return promise.then(doSomething).then(doSomethingElse);
返回一个新的诺言,这是调用这两个.then()
方法的结果。不同之处在于,后者返回的承诺受那些.then()
方法中调用的函数的影响,而第一个承诺仅受callAsync()
其他.then()
处理程序的影响,与其他处理程序无关。
第一个承诺只是监视callAsync()
。它与其他.then()
处理程序中发生的事情完全无关。理解的关键.then()
是它会返回一个新的承诺,并且该新的承诺会受到.then()
处理程序中发生的事情的影响。
有关更多信息,请阅读以下答案:promise.then.then与promise.then之间是否有区别?答应。然后了解链接和分支之间的区别。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句