JS 没有语言内置的休眠(sleep or wait)函数,所谓的 sleep 只是实现一种延迟执行的效果
等待指定时间后再执行对应方法
方法一:伪死循环阻塞主线程
1 2 3 4 5 6 7 8
| function sleep1(fn, time) { let start = new Date().getTime(); while (new Date().getTime() - start < time) { continue; } fn(); }
|
方式二: 定时器
1 2 3
| function sleep2(fn, time) { setTimeout(fn, time); }
|
方式三:promise
1 2 3 4 5 6 7 8
| function sleep3(fn, time) { new Promise(resolve => { setTimeout(resolve, time); }).then(() => { fn(); }); }
|
方式四:async await
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| async function sleep4(fn, time) { await new Promise((resolve) => { setTimeout(resolve, time); }); fn(); } function fn() { console.log("fn"); }
sleep1(fn, 2000); sleep2(fn, 2000); sleep3(fn, 2000); sleep4(fn, 2000);
|