我的代码如下所示。当我q.reject(new Error("outside test")
时,它会打印“失败功能”。但是当我执行q.reject(new Error("inside test")
时,它不会进入失败功能块并且不打印任何内容。不知道为什么会发生这种情况,并且有什么可以实现我想要的。有人可以帮忙吗?
var q = require('q');
function test(a,callback){
return callback("a");
}
function test2(){
q(undefined)
.then(function(){
//return q.reject(new Error("outside test"));
test("a",function(err){
console.log("here2");
return q.reject(new Error("inside test"));
});
})
.fail(function(err){
console.log("Fail function");
});
}
test2();
答案 0 :(得分:0)
返回值q.reject(new Error("inside test"))
不是test()
的返回值,而是传递给test()
的回调值。
如果没有关于test
功能的信息,我不知道它会返回什么,但根据您的描述,这不是被拒绝的承诺,而是其他内容,或者什么都没有(在这种情况下它是undefined
)。如果test
没有返回一个promise(或者是thenable),它的返回值将变成一个立即解析的promise,因此不会调用.fail()
回调。