javascript里的sleep()方法
时间:2022-05-03
本文章向大家介绍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 来指定开启)。
- Html<a>标签href的困惑记载
- SublimeText下写作利器之MarkdownEditing
- Go 语言的基本数据类型
- c语言客户端与go语言服务端通信(网络字节序)
- (译)Go 语言的内存、指针详解
- Redis之并发写入
- Python超过R,成为数据科学和机器学习的最常用语言
- JavaScript 之 this 详解
- Golang 中 for-loop 和 goroutine 的问题
- 【学术】一文教你如何正确利用kNN进行机器学习
- 【学术】机器学习优化函数的直观介绍
- 基于达尔文进化论的遗传算法,还能帮你破解同事的密码?| 附代码
- Vue + Node + Mongodb 开发一个完整博客流程
- Golang中用interface{}接收任何参数与强转
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 动动手——LeetCode题目14:最长公共前缀
- LeetCode题目15:三数之和
- 三数之和姊妹题——LeetCode题目16:最接近的三数之和
- 组合问题——LeetCode题目17:电话号码的字母组合
- Python读取PDF文档并翻译
- n数之和题目要类比——LeetCode题目18:四数之和
- SpringBoot使用MySQL访问数据
- MySQL数据库与JDBC编程
- 自动删除QQ空间指定好友的留言
- 在Ubuntu 18.04中安装VMware工具
- 微信小程序下拉刷新功能
- 详解Linux Screen让程序保持后台运行
- Python Des加密与解密实现软件注册码、机器码
- Excel VBA 在保留原单元格数据的情况下,将计算的百分比加在后面
- 入门级别的面试题——LeetCode题目19:删除链表的倒数第N个节点