我們假設我們有一個功能foo(item, callback)
和一個集合items
。如何處理異步函數和集合?
我想要做的是將items
中的每一項替換爲執行foo
所返回的值,就像Array.map()
一樣。
但問題在於:foo
的結果在回調中產生,因此我無法在回調本身之外訪問它(顯然,我無法更改foo
以滿足我的需要)。
你可以嘗試像
var results = [];
items.map((function(el) {
foo(el, function(result) {results.push(time)});
});
的做法,但那麼你可以不知道什麼時候你results
收藏將是「準備好了」。
我完全無能爲力。 我該怎麼辦?什麼是模式?
編輯:我更感興趣的是香草JavaScript的方式來實現這個比工具/庫,這是無論如何可以接受的答案。
提供的示例不是異步的。 items.map完成後腳本的執行將繼續,items.map完成後,您的結果變量將立即「準備就緒」。 – Tiborg 2014-09-11 12:54:10
爲什麼?可以隨時執行'foo'函數的回調。 – mattecapu 2014-09-11 12:55:56
包裝你的代碼功能和使用回調.... – Ravi 2014-09-11 12:57:22