Promise / bluebird.js中的错误处理

时间:2014-06-21 01:04:36

标签: javascript promise bluebird

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

.then(functionThatReturnsPromise(arg))

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

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

Possibly unhandled Error: <msg>

1 个答案:

答案 0 :(得分:2)

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

blah()
.then( functionThatReturnsPromise(arg) )

就像写作

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

此外,then期望传递一个回调函数,但是你传递一个promise对象。毫无疑问,它无法正常工作。