添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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()

方法四: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函数的几种方式

最新更新

月度热门文章

学习 Web 开发:初学者的 7 个基本步骤 148 views ubuntu22.04安装 Fcitx5输入法,并解决... 89 views 在html5页面上播放 RTSP 的 7 种方法 69 views git—全局设置用户名、密码、邮箱 63 views Safari浏览器直接安装ipa文件 49 views 关于H.264的码率,720P、1080P输出比特率设置 44 views 使用OBS-Studio软件推流直播教程,支持RTMP及... 43 views ubuntu(linux)系统死机(无响应)后,如何强制... 43 views 使用内核 TLS 和 SSL_sendfile() 提高... 40 views ios 微信自带浏览器 微信小程序 webrtc 或视频... 36 views

近期评论

分类

  • Apache (19)
  • Go (13)
  • Linux (84)
  • Mac OS (16)
  • Mysql (203)
  • Nginx (92)
  • Nosql (49)
  • PHP (679)
  • Vim (9)
  • web前端 (390)
  • Wordpress (17)
  • 个人日志 (56)
  • 云计算 (3)
  • 人工智能 (17)
  • 创业 (11)
  • 工具 (107)
  • 建站 (87)
  • 开源 (8)
  • 收费 (10)
  • 架构 (121)
  • 概念 (195)
  • 物联网 (18)
  • 移动互联网 (10)
  • 编程 (237)
  • 趋势 (8)
  • 音视频 (29)
  • 归档

  • 条目feed
  • 评论feed
  • bootstrap中文网
  • django中文网
  • github中文网
  • javascript中文网
  • php编码标准
  • python中文网
  • RabbitMQ中文网
  • Socket.IO中文网
  • webdevstudy
  • 开源社区的行为准则
  • 程序员工具网
  • 日志总数:2622篇 评论总数:250条
    分类总数:26个 标签总数:373个
    友情链接:14个 网站运行:4467天
    最后更新:2024年4月9日