我发现了类似的问题,但我无法让它发挥作用。我理解问题是节点是异步的,但我再一次无法弄明白。
这是有问题的代码:
var count = 1;
for (var i = 0; i < ids.length; i++) {
var id = ids[i];
console.log(count++);
Page.findById(id, function (err, page) {
page.sorting = count;
page.save(function (err) {
if (err)
console.log(err);
});
});
}
所以,console.log(count++)
输出预期结果(1,2,3,我确实有3条记录要通过迭代,虽然共有4条,所以这是完全正确的)但最终结果总是{{ 1}},所以4
总是4,我理解是因为异步但不知道如何使它工作?
答案 0 :(得分:0)
注意:由于count
似乎等于i + 1
,您可以跳过使用其他变量,只需使用i
var count = 1;
for (var i = 0; i < ids.length; i++) {
var id = ids[i];
count++;
(function(count) {
Page.findById(id, function (err, page) {
page.sorting = count;
page.save(function (err) {
if (err)
console.log(err);
});
});
})(count);
}