Как Javascript ES6 включает в себя примитивные асинхронные обещания, если JS является однопоточным?

Я думаю, что я понимаю природу асинхронного против синхронизации. Я также понимаю, что javascript включает в себя определенные асинхронные функции, такие как setTimeout, которые могут функционировать, потому что они используют какой-то веб-API. Я также понимаю, что вы можете давать обещания, используя внешние библиотеки, такие как bluebird. Это все имеет смысл.

Однако, если Promises являются асинхронными, а ES6 включает примитивные объекты Promise, то как это возможно, если JS является однопоточным?

Я полагаю, что либо: 1. JS не является чисто однопоточным 2. Обещания не являются асинхронными 3. Примитивные обещания используют веб-API (или некоторый вид API, предоставляемый средой)

Или ни один из 3 выше? Цените подробное объяснение.

0 ответов

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