Javascript里的sleep()方法
Javascript里的sleep()方法
很多编程语言里都有sleep()
,delay()
等方法,它能让我们的程序不那么着急的去执行下一步操作,而是延迟、等待一段时间。软件开发中经常会遇到需要这样的函数,比如等待几分钟去检查某一事件是否发生。JavaScript里有setTimeout()
方法来实现设定一段时间后执行某个任务,但写法很丑陋,需要提供回调函数:
setTimeout(function(){ alert("Hello"); }, 3000);
JavaScript Promise API是新出现了一个API,借助 Promise,我们可以对setTimeout
函数进行改良,下面就是把setTimeout()
封装成一个返回Promise的sleep()
函数。
// https://zeit.co/blog/async-and-await function 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 来指定开启)。
Javascript里的sleep()方法相关推荐
- JavaScript里的循环方法:forEach,for-in,for-of
2019独角兽企业重金招聘Python工程师标准>>> JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0 ...
- javascript调用Flash里对象的方法(函数)搞了五个小时。
搞了几个小时后,才发现,之前走的路是错的. 今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了, 一搞就整整搞了一个下午. 我记得之前我用Flash8 ...
- Angularjs $scope 里面的$apply 方法 和 $watch 方法
Angularjs $scope 里面的$apply 方法 和 $watch 方法 学习要点: 1. Angularjs $scope 里面的$apply 方法 2. Angularjs $scope ...
- 在js中加html_在HTML文档中嵌入JavaScript的四种方法
在HTML里嵌入JavaScript 在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内嵌,放置在标签之间 (少): 2.放置在有 3.放置自HTML事件处理程序中,该事件处理程 ...
- javascript笔记:深入分析javascript里对象的创建(上)续篇
今天回来一看我的博客居然有这么多人推荐真是开心极了,看来大家对我的研究有了认可,写博客的动力越来越大了,而且我发现写javascript在博客园里比较受欢迎,写java的受众似乎少多了,可能博客园里j ...
- JavaScript 里,$ 代表什么?/JQuery是什么语言?/html中用link标签引入css时的中 rel=stylesheet属性?/EL表达式是什么?...
JavaScript 里,$ 代表什么? 比如说我写一个mouseover事件: $(document).ready(function(){ $("p").mouseover(fu ...
- javascript里的面向对象
2019独角兽企业重金招聘Python工程师标准>>> 前言: javascript 项目中原生态的语法用得比较少了,都是基于jQuery开发,但在移动项目中还是比较麻烦的.想整理个 ...
- javascript王者归来--属性和方法的类型
JavaScript里,对象的属性和方法支持4种不同的类型,第一种类型就是前面所说的私有类型,它的特点 是对外界完全不具备访问性,要访问它们,只有通过特定的getter和setter.第二种类型是动态 ...
- java 动态字符串_Java动态编译执行一串字符串,类似于Javascript里的eval函数
Javascript里的eval函数能动态执行一串js脚本. 那Java里怎么做到呢. 有两种方法: 一种是使用可以执行js脚本的Java类 ScriptEngineManagerpublic sta ...
最新文章
- 大数据环境下该如何优雅地设计数据分层
- 其他算法-PCA主成分分析
- redis缓存失效时间设为多少_java操作Redis缓存设置过期时间的方法
- python可以干什么工作-Python学完工作不好找?看看数据分析可视化都可以做什么...
- Luogu P1091 合唱队形
- Python基础教程---读书笔记四
- 《windows程序设计》第二章学习心得
- 还有多少人不会用K8s?.NET高级高薪岗,开始要求了!
- 结构化分析和面向对象分析的区别 例子_管理游戏测评例子
- 如何计算给定一个unigram语言模型_CS224n笔记[5]:语言模型(LM)和循环神经网络(RNNs)...
- Android 获取唯一机器码的代码
- 苹果8官方主板价格_iPhone8用户哭了!苹果官方曝出iPhone8主板问题,但售价依然坚...
- 6python项目 体脂率计算优化2
- 【实习日报】2019年3月 前端开发实习工作日报汇总
- php生成各种验证码
- 虾神的csdn技术博客
- ctex中dvi格式_LaTex使用过程中的各种类型文件说明
- 关于鸿蒙系统传统文化的作文,【热门】传统文化作文汇编6篇
- CSS秘密花园: 沿着路径的动画
- 移动WEB - 自我总结
热门文章
- 闲来无事,就把lnmp的php升级到php-5.2.17最新稳定版本
- 自己动手架设linux下Web服务器(图)1
- Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
- Linux: 系统结构详解
- 实现动态验证码的思路
- iOS7应用开发5、视图控制器View Controller及其生命周期
- 自适应网页设计(Responsive Web Design)响应式设计
- 绕过图片防盗链的方法
- 使用@Embed嵌入元素
- Shell编程之变量