我想按时间顺序打印3条消息,其中每条消息在显示前一条消息后的n
秒后显示。要求使用JavaScript并使用Promises实现此功能,我编写了一个名为printLater
的函数,该函数返回一个Promise,该Promise利用setTimeout
来实现阻止/等待机制,如下所示:
let printLater = (message, delay) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(message);
resolve();
}, delay);
})
}
然后,我尝试使用3个Promise按顺序打印消息并使用延迟。
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
指定的功能内进行解析,所以我试图理解为什么顺序不正确。
我想按时间顺序打印3条消息,其中每条消息在显示前一条消息的n秒后显示。要求使用JavaScript并使用Promises来实现,...
您可以创建另一个函数来返回printLater()
的包装器:
Hi,Promise链接不正确