2012-05-17 54 views
0

我需要一些關於語法的幫助​​。在自述文件中爲node.js模塊名爲q https://github.com/kriskowal/q寫了一些我不明白的東西。我需要一些幫助承諾和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但沒有任何反應。

+0

你這或的NodeJS在瀏覽器中運行? alertj不存在nodejs –

回答

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); }); 
      
    • 此代碼的工作你描述;注意差異。

+0

謝謝@dan很好的回答! – useruser