Node.js 节点-Q库-Q.reject未进入故障块
我的代码如下。当我执行Node.js 节点-Q库-Q.reject未进入故障块,node.js,promise,q,Node.js,Promise,Q,我的代码如下。当我执行q.reject(新错误(“外部测试”)时,它会打印“失败函数”。但当我执行q.reject(新错误(“内部测试”)时,它不会进入失败函数块,并且不会打印任何内容。不确定为什么会发生这种情况,以及实现我想要的功能的替代方案。有人能在这里提供帮助吗 var q = require('q'); function test(a,callback){ return callback("a"); } function test2(){
q.reject(新错误(“外部测试”)
时,它会打印“失败函数”。但当我执行q.reject(新错误(“内部测试”)
时,它不会进入失败函数块,并且不会打印任何内容。不确定为什么会发生这种情况,以及实现我想要的功能的替代方案。有人能在这里提供帮助吗
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();
返回值
q.reject(新错误(“内部测试”)
不是test()
的返回值,而是传递给test()
的回调的返回值
没有关于
test
函数的信息,我不知道它返回了什么,但是根据您描述的,它不是拒绝的承诺,而是其他东西,或者什么都没有(在这种情况下,它是未定义的),其返回值将转换为立即解决的承诺,因此不会调用.fail()
回调。好的,您需要从然后从回调函数返回。而不是从其他任何地方。您的实际问题是什么(如果您已经找到了解决方案)?您是否控制测试的代码?