Javascript 我需要一些帮助承诺和q库

Javascript 我需要一些帮助承诺和q库,javascript,node.js,promise,q,Javascript,Node.js,Promise,Q,我需要一些关于node.js的语法帮助。在node.js的自述文件中,名为q的模块写了一些我不理解的东西 为什么他们总是在承诺之前写return return Q.fcall(eventualAdd, 2, 2); 如何将带有回调的异步函数设置为返回承诺的函数?我试着 function doThis(a,b, callback) { var result = a+ b; setTimeout( callback, 2000, result);} Q.ncall(doThis, 2,3).the

我需要一些关于
node.js的语法帮助
。在
node.js的自述文件中,名为q的模块写了一些我不理解的东西

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

return Q.fcall(eventualAdd, 2, 2);
如何将带有回调的异步函数设置为返回
承诺的函数
?我试着

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为警报,但什么也没有发生

  • 原因是,在这种情况下,他们希望将承诺返回给当前函数的调用方

  • 我已经在自己的程序中这样做了,并且是这样做的:

    • 首先请注意,
      Q.ncall([function],[this],[arguments,…])
      的第二个参数是
      this
    • 其次,请注意,
      Q.ncall
      为给定函数提供的回调参数与所有其他node.js回调
      (错误,结果)
      相同,因此需要将回调
      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); });
      
    • 此代码按照您描述的方式工作;注意区别


  • 您是在nodejs还是在浏览器中运行此功能?nodejs中不存在警报