提供的代码尝试使用 setTimeout 函数将操作的执行延迟 5 秒:
<code class="javascript">function stateChange(newState) { setTimeout('', 5000); if(newState == -1) { alert('VIDEO HAS STOPPED'); } }</code>
但是,代码在安排超时后立即检查条件 newState == -1,从而消除了预期的延迟。
正确的解决方案涉及使用异步将 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中文网其他相关文章!