js实现sleep

实现sleep

JavaScript由于用途为浏览器脚本语言,故设计为单线程,js为了实现sleep不能像java那样直接暂停某线程
es6新增的Promise异步解决了sleep问题,以下是用Promise封装的sleep函数

    function sleep(delay) {
     
        return new Promise((resolve) =>setTimeout(resolve, delay));
    }

    sleep.then(()={
     
        // sleep代码
        console.log(2);
    })
    console.log(1);

	//1
	//2 

.then 之后的代码会正常进行

也可以用async/await简化,将后续任务放在一个函数中更简洁

    function sleep(delay) {
     
        return new Promise((resolve) =>setTimeout(resolve, delay));
    };

    async function foo() {
     
        const t0 = Date.now();
        await sleep(2000); // 暂停约2000毫秒
        console.log(Date.now() - t0);   
        // ... 如果还有任务的话
    };

	foo();//  2000

await之后整个函数在异步队列中等待执行

你可能感兴趣的:(Javascript)