面试题——sleep函数

16 阅读1分钟

注意点

通过Date函数加循环也可以实现真正的停止一定时间的效果
另外使用setTimeout无法阻断代码执行,结合异步函数和await可以停止代码执行
但是使用setTimeout加异步只能在异步函数内计时和阻断程序,并不能阻断主进程。

sleep异步函数实现

function sleep(time){
    return new Promise(function(resolve){
        setTimeout(resolve,time)
    })
}
await sleep()

注解分析

function sleep(time){
    // 返回一个promise,可以通过结合await来等待执行器函数完成执行
    return new Promise(function(resolve){
        // 让执行器函数耗时time来完成执行(扭转状态)
        setTimeout(resolve,time)
    })
}
// 结合await来阻断程序执行等计时完成
await sleep(3000)

本文章仅供参考,欢迎纠错和建议。