需求
sleep函数,程序等待一定时间后才能执行后续代码。首先想到了定时器setTimeout,由于需要使用回调方式,不考虑。
方案一
借助while循环
const sleep = (time) => {
const t1 = new Date().getTime();
while (true) {
const t2 = new Date().getTime();
if (t2 - t1 >= time) {
break;
}
}
};
console.log(1111);
sleep(3000);
console.log(2222);
方案二
async await
const sleep = (time = 0) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(true);
}, time);
});
};
async function fn() {
console.log(1111);
await sleep(3000);
console.log(2222);
}
fn();
总解
方案一可以直接使用,方案二需要async函数,否则无效。