Как API браузера обрабатывает несколько асинхронных функций, таких как setTimeOuts?

У меня есть следующий код в javascript:

var x = 1;
console.log('printing x'+x);
setTimeout(()=>{console.log("first timeout")},2000);
setTimeout(()=>{console.log("second timeout")},0);

Я знаю, что "второй тайм-аут" печатается перед "первым тайм-аутом". Я понимаю цикл событий и асинхронное поведение в javascript, но у меня огромная путаница в том, как apis браузера: где все эти асинхронные функции, такие какsetTimeout()и ajax запросы регистрируются, выполняет эти функции параллельно. Я знаю, что этот API-интерфейс браузера написан на C++, поэтому может быть многопоточным, но я не уверен на 100%, если это так.

Например, в приведенном выше коде setTimeout((),2000)сначала регистрируется в API браузера, и функция таймера начинает его выполнять. ПозжеsetTimeout((),0) регистрируется пока первый setTimeoutвсе еще выполняется. Здесь, чтобы получить результат второйsetTimeoutAPI браузера должен совместно использовать таймер или механизм задержки или ресурс, чтобы результат secondTimeout помещался первым в очередь обратного вызова. Итак, мой вопрос вкратце: является ли API браузера многопоточным? Если нет, то как он справляется с моей проблемой?

0 ответов

Другие вопросы по тегам