簡體   English   中英

ForEach返回空數組-Node.js

[英]ForEach returns empty array - Node.js

我正在使用節點異步功能。 我通過迭代現有數組來形成新數組。 我想在回調完成后返回新數組。 res.json(arr)響應空數組。 幫我找出問題所在。

 getAllUsers(function(users) {
       var arr = [];
        async.forEach(users, function(user, callback) {
          var id = user._id;
          getAllCustomers(id, function(customers) {
            var count = customers.length;
            user.customers = count;
            arr.push(user);
          });
          callback();

        }, function(err) {
          console.log('iterating done');
          res.json(arr); // returns [], empty array
        });
      });

您的問題是,即使getAllCustomers尚未完成,您的callback也會被調用。 請嘗試以下操作:

getAllUsers(function(users) {
   var arr = [];
    async.each(users, function(user, callback) {
      var id = user._id;
      getAllCustomers(id, function(customers) {
        var count = customers.length;
        user.customers = count;
        arr.push(user);
        callback();
      });


    }, function(err) {
      console.log('iterating done');
      res.json(arr); // returns [], empty array
    });
  });

您應該在getAllCustomers中使用回調

getAllUsers(function(users) {
       var arr = [];
        async.forEach(users, function(user, callback) {
          var id = user._id;
          getAllCustomers(id, function(customers) {
            var count = customers.length;
            user.customers = count;
            arr.push(user);
          callback();

          });


        }, function(err) {
          console.log('iterating done');
          res.json(arr); // returns [], empty array
        });
      });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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