浏览器
下面是使用新的异步/等待语法的解决方案。
请务必检查浏览器支持,因为这是 ECMAScript 6 中引入的语言功能。
实用功能:
const delay = ms => new Promise(res => setTimeout(res, ms));
用法:
const yourFunction = async () => {
await delay(5000);
console.log("Waited 5s");
await delay(5000);
console.log("Waited an additional 5s");
};
此方法的优点是,它使代码的外观和行为类似于同步代码。
节点.js
Node.js 16 提供了一个基于 promise 的内置版本,因此我们不必创建自己的实用程序函数: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");
};
⚠️ 只是为了记录,您可能想使用等待函数来规避争用条件(例如,在测试异步代码时)。这很少是一个好主意。