我正在尝试将一些额外的变量添加到名为“cities”的项目列表中,然后再返回到我的新sails.js应用程序中的客户端。 Sails.js使用Underscore.js进行基本的函数式编程。
这是我目前使用的_.each。 (我首先尝试使用_.map并返回用户,但这也不起作用)。
控制台正确记录每个用户,但在_.each情况“[]”中cities_with_count为空,在_.map情况下为两个未定义的“[undefined undefined]”
User.findByIdIn(user_ids).then(function(users){
var users_with_counts = []
_.each(users, function(user) {
Candy.count({ type: "yummy").then(function(candy_count){
user.candy_count = candy_count
console.log(user);
users_with_count.push(user);
});
});
console.log(users_with_count);
res.view({
users: users_with_count
});
});
答案 0 :(得分:0)
下划线同步循环用户,然后为每个用户发出异步请求:
Candy.count({ type: "yummy").then(function(candy_count){
...
});
当_.each循环结束时,请求可能不一定都处理完毕,因为无法知道答复何时来自后端以及以何种顺序。
当代码进入数组时,users_with_counts尚未填充,导致不必要的行为。
处理这些场景的一种方法是使用计数器来查看所进行的计数查询次数,并仅在所有查询完成时继续使用逻辑。要么执行seInterval并定期检查计数器的值,要么在填充数组后添加if条件以查看程序是否可以继续。