Я думаю, что понимаю природу асинхронности и синхронизации. Я также понимаю, что javascript включает в себя определенные асинхронные функции, такие как setTimeout, которые могут работать, потому что они используют какой-то веб-API. Я также понимаю, что вы можете давать обещания, используя внешние библиотеки, такие как bluebird. Все это имеет смысл.
Однако, если промисы являются асинхронными, а ES6 включает в себя примитивные объекты промисов, то как это возможно, если JS является однопоточным?
Я полагаю, что либо: 1. JS не является чисто однопоточным 2. Обещания не являются асинхронными 3. Примитивные обещания используют веб-API (или какой-то API, предоставляемый средой)
Или ни один из трех вышеперечисленных? Оцените подробное объяснение.
Promise.resolve("World").then(console.log); console.log("Hello")
сам по себе асинхронен. Это больше похоже на № 3 — промисы используют тот же асинхронный интерфейс среды, что и веб-API. - person Bergi   schedule 11.02.2017setTimeout
, для обеспечения асинхронности своих обещаний. - person Bergi   schedule 11.02.2017