簡體   English   中英

Array.push無法在Node.js中使用對象

[英]Array.push is not working with objects in Nodejs

我如何將對象作為數組的條目添加,就像我在這里嘗試做的那樣...

 displayAccounts(function(data){
    var index;
    var accs = new Array();
    for (index = 0; index < data.length; ++index) {
      rclient.get(data.account, function (info) {
        accs.push({
            account: data.account,
            info: info
          });
      });
    }
    console.log(accs);
  });

輸出:

accs = []

所需解決方案:

accs = [{account: 'jak', info: 0},{account: 'jil', info: 1}]

問題幾乎可以肯定是rclient.get異步的 ,因此在循環之后檢查數組會檢查它為時過早(獲取已開始 ,但尚未完成)。 它會被異步發生的回調填充。 等待直到發生最后的回調,例如:

displayAccounts(function(data){
    var index;
    var accs = []; // [] is a better way to write new Array()
    for (index = 0; index < data.length; ++index) 
        rclient.get(data.account, function (info) {
            accs.push({
                account: data.account,
                info: info
            });
            if (accs.length === data.length) {
                // We're done, *now* look at / use the array
                console.log(accs);
            }
        });
    }
});

請注意,根據rclient.get工作方式,回調可能會或可能不會以與請求相同的順序發生。


旁注: rclient.get(data.account, ...看起來可疑,您反復請求相同的信息。也許rclient.get(data[index].account, ...

暫無
暫無

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

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