理解 JavaScript 中的时序延迟对于构建响应迅速且高效的 Web 应用程序至关重要。在本文中,我们将解决在执行一行代码之前等待特定时间的问题。
问题:
JavaScript 开发新手遇到过函数在评估条件之前未按预期等待的问题。预期行为是等待 5 秒,然后再检查某个状态是否已更改。但是,当前函数会立即检查而不是等待。
解决方案:
要实现此所需的行为,我们可以利用以下方法:
浏览器:
使用现代的 async/await 语法(在支持 ECMAScript 6 及更高版本的浏览器中可用),我们可以采用以下解决方案:
<code class="javascript">const delay = ms => new Promise(res => setTimeout(res, ms)); async function yourFunction() { await delay(5000); console.log("Waited 5s"); await delay(5000); console.log("Waited an additional 5s"); }</code>
这种方法通过使其看起来同步来简化代码,尽管是异步执行的。
Node.js:
对于 Node.js 版本 16 及更高版本,我们可以利用内置基于 Promise 的 setTimeout 函数:
<code class="javascript">import { setTimeout } from "timers/promises"; async function yourFunction() { await setTimeout(5000); console.log("Waited 5s"); await setTimeout(5000); console.log("Waited an additional 5s"); }</code>
注意:
需要注意的是,使用延迟函数可以避免竞争条件(尤其是在测试异步时)代码)应谨慎执行,因为它通常会导致次优的解决方案。
以上是如何在 JavaScript 中实现异步任务的等待函数?的详细内容。更多信息请关注PHP中文网其他相关文章!