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()
回调。

好的,您需要从
然后从
回调函数返回
。而不是从其他任何地方。您的实际问题是什么(如果您已经找到了解决方案)?您是否控制测试的代码?