0

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

为什么他们总是return先写promise

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 警报,但没有任何反应。

4

1 回答 1

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); });
      
    • 此代码按您的描述工作;注意差异。

于 2012-05-18T00:09:55.583 回答