gpt4 book ai didi

javascript - promise 方法在打印出值后等待 5 秒

转载 作者:行者123 更新时间:2023-11-30 08:18:21 32 4
gpt4 key购买 nike

目前正在创建一个从 25 倒数到 0 的简单程序。每次打印出当前值时,该程序都应使用 Promise(.then()) 语法等待 5 秒。我是 JS 新手,只是不知道如何以这种特定方式进行操作。非常感谢。

count = 25;
while (count >= 0) {
console.log(count).then(() => wait(7000));
count = count - 1;
}

最佳答案

好吧,你不能只是将 .then 附加到任何东西上;这只是一种可以链接到 Promises 上的方法。 console.log 不返回 Promise,因此您不能将 .then 直接链接到它上面。 Promises 是异步运行的,这意味着一旦你触发了它,它就会在代码继续执行的同时做它的事情;这就是 Promises 的意义所在。因此,您不能将一个放在 while 循环中并期望它在继续之前等待。

如果你想用 Promises 做到这一点,你可以使用 async/await 或构建一个无限的 Promise 链。我建议前者。

所以你首先需要创建你的等待函数,它应该返回一个在指定时间后解析的 Promise:

function wait(ms) {
return new Promise((resolve, reject) => setTimeout(resolve, ms));
}

然后你使用一个异步函数,这样你就可以让它在每个循环中等待 Promises,不过我建议使用 for 循环而不是 while,因为你有一组迭代次数:

async function DoLoop() {
for (let count = 25; count >= 0; --count) {
console.log(count);
await wait(7000);
}
}

请再次记住,根据定义,异步函数和 Promises 是异步的,这意味着如果您在某处调用 now-async DoLoop 函数,您的代码将继续运行该调用,同时循环也在运行同时——调用 DoLoop 的代码不会等待它完成。

关于javascript - promise 方法在打印出值后等待 5 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57979278/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com