Порядок выполнения Javascript с помощью setTimeout ()

Скажем, у меня есть следующий код:

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, будут оценены .

Спасибо!

* Да, я знаю, что не все браузеры следуют стандартам: (

10
задан Community 23 May 2017 в 12:13
поделиться