【发布时间】:2018-01-10 19:57:19
【问题描述】:
我发现了类似的问题,但我无法让它发挥作用。我知道问题在于节点是异步的,但我又一次无法弄清楚。
这是有问题的代码:
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 条,所以这是完全正确的)但最终结果始终是 4,所以page.sorting = count 总是4,我理解这是因为异步但不知道如何使它工作?
【问题讨论】:
-
你可以在普通函数中重写你的 for 循环,比如: function count(i){ if(i
标签: javascript node.js express asynchronous mongoose