哈尔滨微网站建设公司,好看的网站 你知道的2021,物联网手机app开发软件,家居网站建设咨询js本身没有提供睡眠方法#xff0c;因为js阻塞了会导致页面渲染等工作也阻塞#xff0c;所以一般没有这个需求#xff0c;但是有时候为了测试#xff0c;需要一个阻塞方法#xff0c;下面是方法#xff1a;
方法一#xff1a; 使用while循环
let sleep function(ms){…js本身没有提供睡眠方法因为js阻塞了会导致页面渲染等工作也阻塞所以一般没有这个需求但是有时候为了测试需要一个阻塞方法下面是方法
方法一 使用while循环
let sleep function(ms){const endTime Date.now()ms;while(Date.now() endTime){}
}
console.time(test)
sleep(1000)
console.timeEnd(test)该方法需要传一个时间的参数单位是毫秒原理很简单就是获取到代码调用时的时间戳然后加上睡眠的时间获取到结束的时间戳然后进入while循环当当前时间不大于结束时间时一直处于while循环里面以此达到阻塞的目的注意这个阻塞是全部操作都会阻塞包括页面渲染等操作。
方法二 使用异步等待(async/await)
let sleep function(ms){return new Promise(resolvesetTimeout(resolve,ms))
}
async function test(){console.time(test)await sleep(1000)console.timeEnd(test)
}
test()该方法参数与第一个一样原理是让js执行完 setTimeout 在执行后面的js代码这种方式可以阻塞后面的js代码但是由于async/await是promise的语法糖所以不会阻塞页面渲染等操作。