sleep函数作用是让线程休眠,等到指定时间在重新唤起。
方法一:这种实现方式是利用一个伪死循环阻塞主线程。因为JS是单线程的。所以通过这种方式可以实现真正意义上的sleep()。

function sleep(delay) {var start = (new Date()).getTime();while ((new Date()).getTime() - start < delay) {continue;}
}function test() {console.log('111');sleep(2000);console.log('222');
}test()

方法二:定时器

function sleep1(ms, callback) {setTimeout(callback, ms)}//sleep 1ssleep1(1000, () => {console.log(1000)})

方法三:es6异步处理

const sleep = time => {return new Promise(resolve => setTimeout(resolve,time)) } sleep(1000).then(()=>{ console.log(1) })

方法四:yield后面是一个生成器 generator

function sleepGenerator(time) {yield new Promise(function(resolve,reject){setTimeout(resolve,time);})
}
sleepGenerator(1000).next().value.then(()=>{console.log(1)})

方法五:es7---- async/await是基于Promise的,是进一步的一种优化

function sleep(time) {return new Promise(resolve =>setTimeout(resolve,time)) } async function output() {let out = await sleep(1000); console.log(1); return out;
}
output();

注意点:

async用来申明里面包裹的内容可以进行同步的方式执行,await则是进行执行顺序控制,每次执行一个await,程序都会暂停等待await返回值,然后再执行之后的await。
await后面调用的函数需要返回一个promise,另外这个函数是一个普通的函数即可,而不是generator。
await只能用在async函数之中,用在普通函数中会报错。
await命令后面的 Promise 对象,运行结果可能是 rejected,所以最好把 await 命令放在 try…catch 代码块中。
其实,async / await的用法和co差不多,await和yield都是表示暂停,外面包裹一层async 或者 co来表示里面的代码可以采用同步的方式进行处理。不过async / await里面的await后面跟着的函数不需要额外处理,co是需要将它写成一个generator的。

参考文献:Javascript中的async await

js 实现sleep函数相关推荐

  1. js 变量、函数提升

    js 变量.函数提升 先简单理解下作用域的概念,方便对变量与函数提升的概念的理解 function foo() {var x = 1;if (x) {var x = 2;}console.log(x) ...

  2. js时间格式化函数,支持Unix时间戳

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. 关于js的回调函数的一点看法

    关于js的回调函数的一点看法 原文:关于js的回调函数的一点看法 算了一下又有好几个月没写博客了,最近在忙公司android的项目,所以也就很少抽时间来写些东西了.刚闲下来,我就翻了翻之前看的东西.做 ...

  4. unescape解密 php,php 版 模仿 js ,unescape函数解码,escape函数编码的方法

    php 版 模仿 js ,unescape函数解码,escape函数编码的方法 其实跟js 端进行编码和解码相同,而且可以通过php的这个方法直接对js返回的数据进行编码和解码,方法通用. /** * ...

  5. js调用c语言程序设计,HTML页面,测试JS对C函数的调用简单实例

    HTML页面,测试JS对C函数的调用 //http://www.w3schools.com/jsref/event_onclick.asp //document.write('Hello World! ...

  6. legend---十二、js中的js语句和函数和ready函数的关系是什么

    legend---十二.js中的js语句和函数和ready函数的关系是什么 一.总结 一句话总结: 函数和全局变量不必放到ready函数中 语句(调用函数和全局变量)的必须放到ready函数中 1.在 ...

  7. js 字符串操作函数有哪些

    js 字符串操作函数有哪些 一.总结 一句话总结:js字符串函数都是字符串对象的方法,是通过调用字符串方法的方式调用,和java,php里面不一样. 1.字符串替换函数怎么用? 这里的正则表示是加双引 ...

  8. js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)...

    js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js 1 function ajax( ...

  9. JS OOP -02 深入认识JS中的函数

    深入认识JS中的函数: 1.概述,认识函数对象 2.函数对象和其他内部对象的关系 3.将函数作为参数传递 4.传递给函数的隐含参数:arguments 5.函数的apply,call方法和length ...

  10. c++ _int64转字符串_C语言 仿JS的eval函数 解析字符串

    C语言 利用后缀表达式解析字符串(符合c98标准,很容易移植到计算器上) 最近用98标准的C语言写了个解析字符串,类似于JavaScript中的eval函数,感觉挺实用(移植到了计算器上,可以画F(X ...

最新文章

  1. iOS架构-静态库.a打包之资源文件打包成bundle(4)
  2. saltstack mysql模块_SaltStack工具中MySQL的模块返回值问题解决
  3. Ansible之Playbook详解、案例
  4. docker install on centos 6.x
  5. swagger的使用方式
  6. WEB消息提醒实现之二 实现方式-Jquery Ajax长轮询
  7. 女生在java开发和前端之间不知道选择哪个怎么办?
  8. SAP ERP与国内ERP系统的对比,为什么建议选SAP
  9. python stdin和stdout_无法使用Python写入和读取stdin / stdout
  10. 555定时器回差电压计算公式_555定时器及其应用
  11. UILabel常见属性
  12. Face3D学习笔记(5)3DMM示例源码解析【中下】从二维图片的特征点重建三维模型——黄金标准算法
  13. mysql修改登录用户名和密码_如何修改mysql的用户名和密码
  14. 闪付卡(QuickPass)隐私泄露原理
  15. 锐龙r7 PRO 4700G、锐龙r5 PRO 4400G和锐龙r3 4200G 的区别
  16. 如何设计大自然?#合成美学 #无学科专栏
  17. android 高德地图sha1,Android调试高德SDK,如何获取SHA1?
  18. Android 内存优化——常见内存泄露及优化方案
  19. 为什么要进行结构体内存对齐
  20. python房子代码,Python---20行代码爬取斗鱼平台房间数据(上)

热门文章

  1. matlab中exp()函数的使用
  2. 迅控SVS为某公安局打造综合联动指挥中心及合成作战中心
  3. vscode 配php环境的正确姿势
  4. 11.25(python学习)
  5. RFID RC522门禁系统
  6. 《关于个人承接项目的注意事项》读后感
  7. 攻防世界Misc入门题之坚持60s
  8. 转型Web前端需要学什么?如何提升Web前端技能?
  9. 《J2SE 回炉再造10》-------溺水狗
  10. codevs3184 SYY奇遇记·····3