[英]async.series and javascript variables
我認為我的理解存在根本性的脫節。 我一直在閱讀回調,我已經搜索了為什么以下可能不起作用,但我可能正在尋找錯誤的地方。 我有以下代碼:
users = []
async.series [
() ->
userClient.smembers "users", (err, list) ->
async.each list, (item, cb) ->
userClient.hgetall item, (err, user) ->
users.push user
, (err) ->
console.log err
,
() ->
console.log "test"
console.log users
]
console.log“test”似乎沒有打印,我嘗試了很多不同的代碼迭代,但是一旦它超出了內部循環(users.push用戶),我就不能檢索用戶的值。 我最終得到一個空數組[]。 任何人都有任何見解,或者可以指出我的想法在哪里出錯? 謝謝。
由於每個函數都是異步的,因此無法自動知道何時進入系列的下一步。 每個系列函數都將回調作為您需要調用的參數。
(doneCallback) ->
userClient.smembers "users", (err, list) ->
async.each list, (item, cb) ->
userClient.hgetall item, (err, user) ->
users.push user
// You also need to call 'cb' here.
cb();
, (err) ->
console.log err
// Add this to go to the next step after.
doneCallback(err)
另外,根據您使用的users
,您可能希望使用async.map
而不是async.each
來簡化代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.