需要更新的列表长度未知。 其他语言的话一个循环同步的写下来,非常容易。
用node写异步的就觉得比较忧伤了,我给出自己的做法,也看看大家遇到这样的需求是怎么做的。
var list = ["a", "b", "c"];
var tasks = [];
var result;
list.forEach(function(item) {
tasks.push(function() {
var qs = "select * from table where name=\"" + item + "\"";
db.query(qs, function(err, rows) {
var flag;
if(err) {
throw err;
}
if(rows[0]) {
flag = true;
} else {
flag = false;
};
result = {
name: name,
flag: flag
};
}
done();
})
});
tasks.push(function(done) {
if(result.flag) {
qs = "update table set name=\"" + result.name + "\" where id=" + result.id;
} else {
db.query("insert into table set name=\"" + result.name "\"");
}
db.query("insert into table set name=\"" + result.name "\"");
});
});