Экспериментирую с промисами, не понимаю, что происходит.
По описаниям в интернете, then должен возвращать промис, но если я помещаю внутрь него setTimeout, то программа начинает вести себя странно.
Я ожидал, что промис сработает через 7 секунд, передаст 2 в then, который подождет 5 секунд и передаст новое значение дальше. При этом по факту проходит 1-2 секунды и скрипт завершается, возвращая 3. Откуда берется 3?
Почему промис срабатывает раньше, чем указано в setTimeout?
Почему setTimeout вообще не работает в then?
setTimeout(console.log(p), 6000);
- тоже выводится не через 10 секунд, а одновременно с результатом выполнения промиса.
let p = new Promise((res, rej) => {
setTimeout(res(2), 7000);
})
.then((data) => setTimeout(data + 4, 5000))
.then((data) => console.log(data));
setTimeout(console.log(p), 10000);