new Promise(resolve => {
// здесь код выполняется синхронно
resolve();
}).then(() => {
// здесь уже асинхронно, в ближайшем микротаске после вызова resolve выше
});
Promise.resolve().then(() => {
// здесь тоже асинхронно, в ближайшем микротаске
});
много вычислений
Это не про асинхронность.
Асинхронность - это про кооперативную многозадачность, то есть промис может только отложить вычисления на потом, но они все равно заблокируют поток, который у JS всего один.
А для "много вычислений" без блокирования основного потока, эти "много вычислений" нужно выносить в отдельный поток. В JS для этого есть воркеры. А вот уже результат от воркера можно ждать асинхронно.