下面这个函数并没有像我想要的那样工作;作为一个 JS 新手,我不明白为什么。
我需要它等待 5 秒钟,然后再检查是否newState
is -1
.
目前,它不会等待,而是立即检查。
function stateChange(newState) {
setTimeout('', 5000);
if(newState == -1) {
alert('VIDEO HAS STOPPED');
}
}
Browser
Here's a solution using the new async/await https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await syntax.
请务必检查浏览器支持 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await#Browser_compatibility因为这是 ECMAScript 6 引入的语言功能。
实用功能:
const delay = ms => new Promise(res => setTimeout(res, ms));
Usage:
const yourFunction = async () => {
await delay(5000);
console.log("Waited 5s");
await delay(5000);
console.log("Waited an additional 5s");
};
这种方法的优点是它使您的代码看起来和行为都像同步代码。
Node.js
Node.js 16 提供了一个内置版本setTimeout
这是基于承诺的,因此我们不必创建自己的实用函数:
import { setTimeout } from "timers/promises";
const yourFunction = async () => {
await setTimeout(5000);
console.log("Waited 5s");
await setTimeout(5000);
console.log("Waited an additional 5s");
};
⚠️ 仅供记录,您可能会想使用等待函数来规避竞争条件(例如,在测试异步代码时)。这很少是一个好主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)