2

then在处理错误的上下文中,这些调用之间有什么区别?

.then(functionThatReturnsPromise(arg))

.then(function() {
    return functionThatReturnsPromise(arg);
})

在第一个示例中,如果函数functionThatReturnsPromisethrows error,则不会调用 catch 块,并且 bluebird 会打印错误;

Possibly unhandled Error: <msg>
4

1 回答 1

3

第一个functionThatReturnPromise在前一个承诺完成之前运行!如果你写

blah()
.then( functionThatReturnsPromise(arg) )

就像写作一样

var firstPromise = blah();
var x = functionThatReturnsPromise(arg)
firstPromise.then(x);

此外,then 期望传递一个回调函数,但您传递的是一个承诺对象。它无法正常工作也就不足为奇了。

于 2014-06-21T02:03:58.843 回答