📅  最后修改于: 2023-12-03 15:38:41.648000             🧑  作者: Mango
在编写 JavaScript 代码时,有时需要添加一些等待时间的功能,比如原生 JS 不支持像 Python 一样的 sleep() 函数,这时我们可以通过使用 setTimeout() 或 Promise 来实现等待效果。
setTimeout() 函数是 JavaScript 的一个内置函数,它允许我们在一定的时间后执行代码。我们可以利用这个函数来实现等待效果。
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function main() {
console.log('start');
await sleep(2000);
console.log('end');
}
main();
上面的代码中,我们定义了一个 sleep() 函数,该函数返回一个 Promise 对象。在 main() 函数中,我们使用 await 来等待 sleep() 函数返回的 Promise 对象。
使用 setTimeout() 函数的优点在于我们可以精确地控制等待时间,但缺点是无法保证等待时间的精确性,因为 JavaScript 是单线程执行的语言,可能存在其它任务在等待队列中。
我们还可以使用 Promise 封装 setTimeout() 函数,这样代码将更易于阅读和维护。
function sleep(ms) {
return new Promise(resolve => {
setTimeout(() => {
resolve();
}, ms);
});
}
async function main() {
console.log('start');
await sleep(2000);
console.log('end');
}
main();
上面的代码中,我们定义了一个 Promise,这个 Promise 在一定时间后 resolve()。在 main() 函数中,我们使用 await 来等待 Promise 对象。
使用 Promise 封装 setTimeout() 函数的优点在于代码更易于阅读和维护,缺点在于代码量比使用 setTimeout() 函数多一些。
总之,在继续使用 JavaScript 之前添加睡眠等待函数,我们可以使用 setTimeout() 或 Promise 来实现等待效果,具体使用哪种方法取决于实际情况。