** sleep函数,暂停任务执行。**
我们用 setTimeout 模拟 sleep 函数。
- 思路:
- 将 setTimeout 函数 promise化成 sleep 异步函数。
- 利用 async...await。使用 await 等待异步函数同步执行。
let sleep = function(delay){
return new Promise((resolve) => {
setTimeout(resolve, delay)
})
};
// 测试demo
let test = async function(){
// 等待1s,输出1
await sleep(1000);
console.log(1);
// 再等待2s,输出2
await sleep(2000);
console.log(2);
};
test();
结果是:1s后输出1,再过2s(第3秒)输出2。
使用 while 阻塞主线程,模拟 sleep 函数。(不推荐)
// 如果间隔时间少于1s,则继续循环下去。
let start = Date.now();
while(Date.now() - start < 1000){
continue;
}
console.log(1);