【问题标题】:Node - Q library - Q.reject not going into fail block节点 - Q 库 - Q.reject 不会进入失败块
【发布时间】:2017-06-23 12:06:02
【问题描述】:

我的代码如下所示。当我执行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(); 

【问题讨论】:

  • 嗯,你需要从then回调函数中调用return。不是来自其他任何地方。您的实际问题是什么(如果您已经找到了解决方案)?你控制test的代码吗?

标签: node.js promise q


【解决方案1】:

q.reject(new Error("inside test")) 的返回值不是test() 的返回值,而是传递给test() 的回调的返回值。

没有关于test 函数的信息,我不知道它返回了什么,但根据你的描述,这不是被拒绝的承诺,而是其他东西,或者根本没有(在这种情况下,它是undefined)。如果test 没有返回一个promise(或thenable),它的返回值将变成一个立即解析的promise,因此.fail() 回调不会被调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多