JavaScript 实现Sleep方法(多个setTimeout同步执行)
2021-06-10 11:33
591 查看
前言
JavaScript是单线程的,如果所有操作都是同步,必将线程堵塞,页面失去响应。因此JavaScript采用了事件驱动机制,在单线程模型下,使用异步回调函数的方式来实现非阻塞的IO操作。因此也就出现了多个setTimeout存在时,不能达到理想的效果。那么在JavaScript中实现其他语言中Sleep的效果呢?
解决办法
首先借助Promise对setTimeout函数进行改良,实现一个返回Promise的Sleep函数。
function Sleep (time) { return new Promise((resolve) => setTimeout(resolve, time)); } // 用法 Sleep(5000).then(() => { //Do some thing })
这里用到了ES6中的箭头(arrow)函数,但是这里不是同步的,我们需要借助 async/await 关键字。
//引用JQuery $(async function() { console.log('Do some thing, ' + new Date()); await Sleep(5000); console.log('Do some thing, ' + new Date()); }); function Sleep (time) { return new Promise((resolve) => setTimeout(resolve, time)); }
借助 async/await 关键字,我们就实现了类似于其他语言中的Sleep函数。
相关文章推荐
- JavaScript实现向setTimeout执行代码传递参数的方法
- Javascript延迟执行实现方法(setTimeout)
- 【JavaScript】使用定时器实现Js的延期执行或重复执行setTimeout,setInterval
- JavaScript实现当网页加载完成后执行指定函数的方法
- javascript中定时执行的方法setinterval()和settimeout()和clearinterval()
- JavaScript中停止执行setInterval和setTimeout事件的方法
- JS中如何实现sleep功能 js定时执行方法
- JavaScript中停止执行setInterval和setTimeout事件的方法
- 使用ajax的post同步执行(实现方法)
- JS实现停留几秒sleep,Js中for循环的阻塞机制,setTimeout延迟执行
- 【JavaScript】使用定时器实现Js的延期执行或重复执行setTimeout,setInterval
- JavaScript-每隔5分钟执行一次ajax请求的实现方法
- JavaScript使用setTimeout实现延迟弹出警告框的方法
- Javascript setTimeout 带参数延迟执行 闭包实现
- JavaScript实现点击回车执行方法
- JavaScript同步、异步、回调执行顺序之经典闭包(setTimeout面试题分析)
- JavaScript基于setTimeout实现计数的方法
- JS实现停留几秒sleep,Js中for循环的阻塞机制,setTimeout延迟执行
- JavaScript中setTimeout 和 setInterval 的区别--例子:在网页中实现倒记时的方法
- 【JavaScript】使用定时器实现Js的延期执行或重复执行setTimeout,setInterval