簡體   English   中英

async.series和javascript變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM