Скажем, у меня есть следующий код:
function testA {
setTimeout('testB()', 1000);
doLong();
}
function testB {
doSomething();
}
function doLong() {
//takes a few seconds to do something
}
Я выполняю testA ()
. Я читал, что Javascript однопоточный. Что произойдет через 1000 миллисекунд, когда истечет время ожидания для testB ()
?
Некоторые возможности, о которых я могу подумать:
testB ()
поставлен в очередь для выполнения после doLong ()
и все, что он вызвал, завершены. doLong ()
немедленно завершается, и запускается testB ()
. doLong ()
дано еще немного времени до остановки (автоматически или после запроса пользователя) и запускается testB ()
. doLong ()
приостанавливается, testB ()
запущен. После завершения testB ()
возобновляется работа doLong ()
. Каков правильный ответ? Это зависит от реализации или является частью стандарта? *
Этот вопрос похож, но не то же самое, насколько я могу судить.
Любые ссылки, которые вы можете порекомендовать для лучшего понимания выполнения Javascript, будут оценены .
Спасибо!
* Да, я знаю, что не все браузеры следуют стандартам: (