2016-09-21 71 views
0

对于具有nodejs的Sqlite,您不能将调用执行顺序等同于查询的实际数据库执行顺序。 例如,在此pseuso码你无法预测,如果将之前插入B或反之亦然:nodejs + sqlite:查询执行顺序

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

但对于回调的执行顺序?如果在INSERT B的回调之前调用INSERT A的回调函数,那么可以推导出A在B之前是插入器?

回答

1

当代码开始执行,那么所有的回调被传递到event queueFIFO秩序和事件队列看当前堆栈执行,如果堆栈是空然后立即通过first position's callbackstack

所以在你的情况下,如果调用INSERT A回调函数,那么在执行INSERT B回调函数之后,它会首先执行。

这里建议YouTube linkhttps://www.youtube.com/watch?v=8aGhZQkoFbQ了解event loop正确,因为这家伙以适当的方式

+0

谢谢你解释了一切可以采取很多的想法从这里开始!我正在看这个很棒的视频。所以我可以将回调的执行顺序作为真正的数据库执行顺序。 – user2957271