我有一个foreach循环,我连接到mysql数据库,从表中选择一个唯一的值" A"返回该值,然后插入并更新表中的行" A"基于该值是否存在。我遇到的问题是,似乎节点JS / javascript的异步特性意味着当我循环回来再看一下表#34; A"对于该值,它有时不存在,因为前一个循环没有及时执行插入。非常感谢任何帮助。
答案 0 :(得分:1)
因为在你的情况下你需要先前的db查询在下一个之前完成,你将不得不停止使用forEach循环而是使用递归函数。
var testArr = ['a', 'b', 'c'];
function doWork (i) {
if (i === testArr.length) return;
db.doQuery('foobar with ' + testArr[i] + '...', function () {
doWork(i++);
});
}
doWork(0);