![](/img/trans.png)
[英]Node.js with Express: Push to an empty Array returns an empty Array
[英]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.