如何等待数据库上的查询执行?

时间:2015-04-30 09:07:31

标签: node.js sqlite callback

我的代码是:

        jsonArray.forEach(function (that) {
            db.each(sql, function (err, row) {
            }, function (err, rows) {
                console.log("111");
            });
        });
        console.log("222");
第一次写入后

是222。 如何等待db.each写111然后222? 感谢

编辑:

console.log("222");在循环之后。

1 个答案:

答案 0 :(得分:2)

为了确保在“111”之后记录“222”,你必须这样做:

jsonArray.forEach(function (that) {
    db.each(sql, function (err, row) {
    }, function (err, rows) {
        console.log("111");
        console.log("222");
    });
});

这是因为传递给db.each()的第二个函数在数据库查询完成后保证被称为。由于数据库查询是以异步执行的,因此您无法在启动查询后立即记录“222”并期望它在“111”之后可靠地显示。

现在,如果你真的希望“111”打印出每个结果行,你需要这样的东西:

jsonArray.forEach(function (that) {
    db.each(sql, function (err, row) {
        console.log("111");
    }, function (err, rows) {
        console.log("222");
    });
});