使用JavaScript(節點,但瀏覽器中存在相同問題),我有一個用戶列表。必須使用每個用戶對象登錄到交易所以檢索其訂單,然後(如果有)找到,處理它們。一旦登錄到交易所,就會建立一個循環,以便定期檢索所有用戶的所有交易所的訂單,直到該過程終止。node.js異步在循環和處理對象數組時丟失上下文
例如爲:
var users = [ { id:1, throttle: 20 }, { id: 2, throttle: 45 } ];
var exchanges = [ 'au', 'uk' ];
將意味着4個迴路與後續的設置運行::
processor 1 - id: 1, exchange 'au', throttle: 20
processor 2 - id: 1, exchange 'uk', throttle: 20
processor 3 - id: 2, exchange 'au', throttle: 45
processor 4 - id: 2, exchange 'uk', throttle: 45
對於每一種情況下,我每圈x分鐘(根據油門)。
我一直在使用caolan的異步庫來做到這一點 - 特別是async.each,async.forever和async.parallel函數;但我正在努力在他們之間傳遞範圍。
問題是用戶在第一次通過時會分配交換(例如'au')並且運行良好。在任何後續的循環中,該函數會選擇一個不同的用戶來應用它。
我創建了一個小提琴來演示這個問題:http://jsfiddle.net/RnMb9/7/
第一遍後(用戶1:加工AU交換(每20秒))「AU」是從來沒有出現過。
關於如何糾正此上下文問題的任何想法?我一直在玩弄所有領域的用戶,但無濟於事。
請在問題中發佈您的代碼。 – Bergi
對於「開始關閉」,您想要一個同步循環 - 不要使用帶有回調函數的'async.each',而是使用普通的'_.each' – Bergi