【问题标题】:I need some help promises and q library我需要一些帮助承诺和 q 库
【发布时间】:2013-02-12 11:22:48
【问题描述】:

我需要一些关于node.js promises 语法的帮助。在 node.js 的自述文件中,名为 q https://github.com/kriskowal/q 的模块写了一些我不明白的内容。

为什么他们总是在promise之前写return

return Q.fcall(eventualAdd, 2, 2);

如何将带有回调的异步函数转换为返回 promise 的函数?我试试

function doThis(a,b, callback) { var result = a+ b; setTimeout( callback, 2000, result);}
Q.ncall(doThis, 2,3).then( function(result) { alert(result); });

我认为在 2000 年之后它必须以 5 进行警报,但没有任何反应。

【问题讨论】:

  • 你是在 nodejs 中还是在浏览器中运行它? nodejs中不存在警报

标签: javascript node.js promise q


【解决方案1】:
  1. 原因是在这种情况下,他们希望将承诺返回给当前函数的调用者。

  2. 我已经在自己的程序中完成了这项工作,并且是这样完成的:

    • 首先注意Q.ncall([function], [this], [arguments,...])的第二个参数是this
    • 其次请注意,Q.ncall 为给定函数提供的回调参数与所有其他 node.js 回调 (error, result) 相同,因此需要将回调 null 作为成功时的错误。

      var Q = require('q');
      
      function doThis(a,b, callback) { 
        var result = a + b;
        setTimeout(function () { callback(null, result) }, 2000);
      }
      
      Q.ncall(doThis, null, 2, 3).then(function(result) { console.error(result); });
      
    • 此代码如您所描述的那样工作;注意差异。

【讨论】:

    猜你喜欢
    • 2020-11-08
    • 1970-01-01
    • 2012-02-17
    • 2019-02-19
    • 2021-03-07
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多