Я хочу напечатать 3 сообщения в определенной последовательности, где каждое сообщение отображается через n
секунд после отображения предыдущего сообщения. Требуя реализовать это с помощью JavaScript и используя Promises, я написал функцию с именем printLater
, которая возвращает Promise с использованием setTimeout
для реализации механизма блокировки / ожидания следующим образом:
let printLater = (message, delay) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(message);
resolve();
}, delay);
})
}
Затем, Я попытался использовать 3 обещания для последовательной печати сообщений и с задержками.
printLater('first message, after 2 seconds from start of program', 2_000)
.then(printLater('second message, after 5 seconds after first message is displayed', 5_000))
.then(printLater('third message, after 1 second after second message is displayed', 1_000));
Требуется вывод:
first message, after 2 seconds from start of program
second message, after 5 seconds after first message is displayed
third message, after 1 second after second message is displayed
Но фактический вывод был:
third message, after 1 second after second message is displayed
first message, after 2 seconds from start of program
second message, after 5 seconds after first message is displayed
Я пытаюсь понять, почему последовательность не в порядке, учитывая, что я разрешаю в функции, указанной для setTimeout
.