首页  >  文章  >  web前端  >  如何设置超时后延迟5秒执行代码?

如何设置超时后延迟5秒执行代码?

Barbara Streisand
Barbara Streisand原创
2024-10-26 03:26:27273浏览

How Can I Delay Code Execution for 5 Seconds After Setting a Timeout?

推迟代码执行 5 秒

提供的代码尝试使用 setTimeout 函数将操作的执行延迟 5 秒:

<code class="javascript">function stateChange(newState) {
  setTimeout('', 5000);

  if(newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
}</code>

但是,代码在安排超时后立即检查条件 newState == -1,从而消除了预期的延迟。

浏览器/Node.js 解决方案

正确的解决方案涉及使用异步将 if 语句的执行推迟到 5 秒后的编程技术。对于浏览器,您可以使用 async/await 语法:

<code class="javascript">// Utility function
const delay = ms => new Promise(res => setTimeout(res, ms));

// Function to wait 5 seconds before checking newState
const stateChange = async (newState) => {
  await delay(5000);
  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
};</code>

对于 Node.js 16 及更高版本,您可以利用内置的基于 Promise 的 setTimeout:

<code class="javascript">import { setTimeout } from "timers/promises";

const stateChange = async (newState) => {
  await setTimeout(5000);
  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
};</code>

请记住检查浏览器对 async/await 的支持以及内置基于 Promise 的 setTimeout 的 Node.js 版本。

以上是如何设置超时后延迟5秒执行代码?的详细内容。更多信息请关注PHP中文网其他相关文章!

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