2012-12-11 44 views
2

如何處理期貨有多個參數的回調?這對我對未來的每一次使用都很重要。 github示例顯示它只處理一個參數。節點纖維/未來回調

Github Readme的例子是

var fileNames = readdir('.').wait(); 

但對某事有什麼MySQL的調用,比如

client.query("select * from employees", function(err, results, fields) { 
    // callback function returns employees array 
    callback(results); 
}); 

我將如何得到這三個(errresultsfields)利用期貨wait()方法?

編輯

實驗已經告訴我,回調的第一個參數,在這種情況下err,總是被視爲錯誤,如果該值是truthy被拋出。第二個參數已分配。盡我所知,任何進一步的論點都被忽略了。

回答

3

創建client.query的包裝,返回一個數據參數與兩個結果。

client.prototype.query2 = function (sql, callback) { 
     this.query(sql, 
       function(err, results, fields) { 
        var data={result:result, fields:fields}; 
        callback(err,data); 
       } 
}; 

我最近創建了比「期貨」更簡單的抽象,也是基於Fibers。 我還沒有用真實世界的數據庫示例測試過我的代碼。請嘗試和幫助,如果你能我測試:https://github.com/luciotato/waitfor

+0

很聰明。我暫時沒有時間瞭解這些代碼,但看起來這是一部分。謝謝! – wmarbut