javascript里的sleep()方法
来源:互联网 发布:js下载 编辑:程序博客网 时间:2024/05/22 01:46
很多编程语言里都有sleep()
,delay()
等方法,它能让我们的程序不那么着急的去执行下一步操作,而是延迟、等待一段时间。软件开发中经常会遇到需要这样的函数,比如等待几分钟去检查某一事件是否发生。JavaScript里有setTimeout()
方法来实现设定一段时间后执行某个任务,但写法很丑陋,需要提供回调函数:
setTimeout(function(){ alert("Hello"); }, 3000);
JavaScript Promise API是新出现了一个API,借助 Promise,我们可以对setTimeout
函数进行改良,下面就是把setTimeout()
封装成一个返回Promise的sleep()
函数。
// https://zeit.co/blog/async-and-awaitfunction sleep (time) { return new Promise((resolve) => setTimeout(resolve, time));}// 用法sleep(500).then(() => { // 这里写sleep之后需要去做的事情})
你会发现,这种写法很优雅,很像其它编程语言里的延迟、等待函数。Promise API使我们避免传入回调函数,我们在实现中还使用了ES6中的箭头(arrow)函数。
这里需要提到的一个问题是,这个sleep()
在执行的时候是“block”程序的继续执行的。它不是同步的。如果想让它同步执行,不妨碍执行之后的代码,我们可以使用 async/await
关键字。
(async function() { console.log('Do some thing, ' + new Date()); await sleep(3000); console.log('Do other things, ' + new Date());})();
执行结果:
Do some thing, Mon Feb 23 2015 21:52:11 GMT+0800 (CST) Do other things, Mon Feb 23 2015 21:52:14 GMT+0800 (CST)
你会发现,这一次,sleep()
并没有阻碍第二个console
的执行。
但 async/await
是ES7中的语法,目前还是处于试验阶段。那现在想用这个async/await
特性怎么办?可以尝试 google 的一个 JavaScript 预编译器 traceur,可以将高版本的 JavaScript 编译为 ES5 代码,已经实验性的支持了 async/await (需要使用 –experimental 来指定开启)。
0 0
- javascript里的sleep()方法
- javascript里的sleep()方法
- JavaScript里模拟sleep
- 用javascript实现sleep方法
- javascript(ES5,ES6)中实现sleep的方法
- 线程的sleep方法
- javascript 里Array的一些方法
- javascript里的URI编码方法
- javascript 调用flash里的方法
- JavaScript里获取电池状态的方法
- JavaScript里获取电池状态的方法
- JavaScript两种方法实现sleep
- 内核中sleep的方法
- SystemClock.sleep()方法与Thread.sleep()方法的区别
- SystemClock.sleep()方法与Thread.sleep()方法的区别
- javascript sleep
- 如何实现javascript的sleep功能
- Javascript中暂停功能(sleep)的实现
- hdu 3595 GG and MM (Every-SG博弈+二维SG值)
- JavaWeb---request
- Maven快速创建SpringMVC web工程详解
- 时间偏移计算
- Ruby 迭代器
- javascript里的sleep()方法
- UIView的UIViewAutoresizingMark
- Excel文件导入导出实战(4)--上传下载
- 社交网络的好友推荐
- ImportError:cannot import name game
- centos中安装并使用svn
- AFNetworking 对数据进行https ssl加密
- Android Develop:减小APK大小
- 获取Echarts的DataZoom的起始值