0
如何防止重新进入操作?例如:如何防止重新进入节点
var updateValue = function(cb) {
readValFromDB(function(err, val) {
if (err) { /* ... */ }
val = val + 1;
saveValToDB(function(err2, val) {
if (err2) { /* ... */ }
cb();
});
});
};
for(var i=0; i<100; i++) {
updateValue(function() {
});
}
如果在数据库的字段中有值。初始值为0;在更新100次后,我希望数据库中的值将变为100.
而在节点中,更新100次后,数据库中的值将为1,2,3或其他随机值。因为在调用第一个saveValToDB()
之前,可能已经执行了很多次。换句话说,这没有序列化。
有没有一种方法可以确保100次更新后的值为100?
肯定这样的事情不会在Node.js工作; Node是一种非阻塞语言,这意味着它不会等待完成操作;你需要使用async.each或者async.map – user385729