2016-09-21 2 views
0

С Sqlite с nodejs вы не можете выполнить порядок выполнения вызова, равный реальному порядку выполнения db запроса. К примеру, в этом pseuso-код, который вы не можете предсказать, будет ли вставляться А перед В или наоборот:nodejs + sqlite: порядок выполнения запросов

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

Но насчет порядка выполнения обратных вызовов? Если обратный вызов INSERT A будет вызван перед обратным вызовом INSERT B, вы можете сделать вывод, что A будет вставляться в B до B?

ответ

1

Когда выполнение кода запускается, то все обратные вызовы передаются event queue в FIFO порядке и события очереди наблюдать за выполнение текущего стека, а если стек пуст, то немедленно передать first position's callback в stack.

Так что в вашем случае, если вызывается обратный вызов INSERT A, он выполняется сначала после выполнения обратного вызова INSERT B.

Здесь рекомендуется YouTube linkhttps://www.youtube.com/watch?v=8aGhZQkoFbQ понять event loop правильно, вы можете взять много идей здесь, так как это Гай объяснил все соответствующим образом

+0

Спасибо! Я смотрю это хорошее видео. Поэтому я могу выполнить порядок выполнения обратных вызовов как реальный порядок выполнения db. – user2957271