2016-09-21 100 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