繁体   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