setTimeout模拟sleep函数

1,380 阅读1分钟

** sleep函数,暂停任务执行。**

我们用 setTimeout 模拟 sleep 函数。

  • 思路:
    1. 将 setTimeout 函数 promise化成 sleep 异步函数。
    2. 利用 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);