首页  >  文章  >  web前端  >  如何在 JavaScript 中实现异步任务的等待函数?

如何在 JavaScript 中实现异步任务的等待函数?

Patricia Arquette
Patricia Arquette原创
2024-10-26 03:02:27106浏览

How to Implement a Wait Function in JavaScript for Asynchronous Tasks?

JavaScript 中的时序延迟

理解 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn