nodejs + sqlite:查询执行顺序

nodejs + sqlite: query execution order

对于带有 nodejs 的 Sqlite,您不能让调用执行顺序等于查询的实际数据库执行顺序。 例如,在此伪代码中,您无法预测是否会在 B 之前插入 A,反之亦然:

function() {
    db.run("INSERT A", function() { });
    db.run("INSERT B", function() { });
}

但是回调的执行顺序呢?如果 INSERT A 的回调将在 INSERT B 的回调之前调用,您可以推断 A 将在 B 之前插入?

当代码执行开始时,所有回调都按 FIFO 顺序传递给 event queue,事件队列监视当前堆栈执行,如果堆栈为空,则立即传递 first position's callbackstack.

因此,在您的情况下,如果调用 INSERT A 回调,那么它会在 INSERT B 回调执行之后首先执行。

这里推荐 YouTube link https://www.youtube.com/watch?v=8aGhZQkoFbQ 正确理解 event loop 你可以从这里得到很多想法,因为这个人以合适的方式解释了一切