我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用setimmediate实现可伸缩执行的脚本

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用setimmediate实现可伸缩执行的脚本

这篇文章主要介绍“如何使用setimmediate实现可伸缩执行的脚本”,在日常操作中,相信很多人在如何使用setimmediate实现可伸缩执行的脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用setimmediate实现可伸缩执行的脚本”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

看过我对JavaScript 性能优化相关的讨论的同学们一定很了解我的一个癖好,就是将一大段的script分解成多个块来执行。通过使用setTimeout(),你可以去改变特定代码执行的时间,从而做到让UI现场执行已经在队列里的任务。比如,你可以通过这样的方式把要执行的代码在50ms后加到UI线程队列里:

setTimeout(function(){      //do  something   }, 50)

那么,在50ms后,这个函数就会被添加到队列里,并在轮到它的时候执行。调用setTimeout()方法可以允许当前的JavaScript任务完成从而下一个UI更新可以顺利进行。

虽然我一直很支持使用setTimeout()来提高性能,但是还是存在几个问题。***个并且是最重要的问题是不同的浏览器有着不一样的时间精确度。IE8和更早的IE的时间精确度是15.6ms,而IE9,或者更新的浏览器,还有chrome的时间精确度已经到达4ms。所有的浏览器都强制给setTimeout设置了一个***延迟值,所以setTimeout(fn, 0)实际上在大于0ms的时间之后才会执行,具体取决于对应的时间精确度。

另一个是电源使用的问题。管理时间关系到笔记本或者手机的电池使用。Chrome曾经尝试把时间精确度降低到1ms,结果发现会增加笔记本电池的损耗。***还是觉得把时间精确度设置回4ms。其他浏览器也做过类似的尝试,不过许多油门计时器分辨率为1s。微软发现时间精确度为1ms的时候,电池的使用时间会降低25%。实际上,IE9会判断笔记本是否在使用电池的情况下运行,如果是电池,则时间精确度为15.6ms,如果是直接插的电源则时间精确度会降低到4ms。

来自W3C Web Performance Working Group的一个方案“ Efficient Script Yielding ”,定义了一个新的函数去实现脚本的分块执行的setImmediate()方法。 这个方法接收一个函数作为参数,它可以让这个函数在UI线程空闲的时候执行。基本的用法:

var id = setImmediate(function(){       //do something   });

setImmediate()函数会返回一个id,这个id可以通过clearImmediate()方法来取消这个过程。

我们也可以给它传递一些参数

setImmediate(function(doc, win){      //do something  }, document, window);

用这个方式来传递可选的参数意味着你不需要总是使用一个闭包来让函数包含一些有用的信息。

setImmediate()可以让浏览器不需要去管理进程的定时器。不需要去等待更耗电的系统中断,浏览器只需要等待UI队列空闲,然后把新的JavaScript任务插入进去。Node.js的开发者会比较容易理解这个问题,因为process.nextTick()在自己的环境里做了相同的事情。

现在只有ie10支持这个方法,而且因为还没有完全定下来,所以使用了msSetIntermediate()。IE10的Test Drive上也有一个setImmediate()的例子,展示了新方法带来的性能提升。这个例子使用一个延迟来排列一些数据,排序之后的状态会直接展示出来。

到此,关于“如何使用setimmediate实现可伸缩执行的脚本”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用setimmediate实现可伸缩执行的脚本

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何用shell脚本实现监控shell脚本的执行流程及变量的值

本篇内容主要讲解“如何用shell脚本实现监控shell脚本的执行流程及变量的值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用shell脚本实现监控shell脚本的执行流程及变量的值”吧!
2023-06-09

如何用 C++ 函数设计和实现可伸缩的并发系统?

通过遵循原子性、线程安全性、可重用性原则,并利用线程、锁、原子变量等机制,c++++ 提供了创建可扩展并发系统所需的强大特性,例如并行求和等实战案例中所示。利用 C++ 函数构建可扩展的并发系统引言在现代软件开发中,并发性对于处理繁重的计
如何用 C++ 函数设计和实现可伸缩的并发系统?
2024-04-27

如何使用Bash脚本列出文件、目录、可执行文件和链接

这篇文章主要为大家展示了“如何使用Bash脚本列出文件、目录、可执行文件和链接”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Bash脚本列出文件、目录、可执行文件和链接”这篇文章吧。一个
2023-06-16

如何使用PHP7的CLI模式提高脚本的执行效率?

如何使用PHP7的CLI模式提高脚本的执行效率?PHP是一种非常流行的服务器端脚本语言,而PHP7则是PHP系列中最新版本的一个重大升级。PHP7不仅提供了许多新的特性和改进,还引入了一种命令行界面(CLI)模式,可以帮助开发者更好地使用P
2023-10-22

如何实现一键自动更改本机IP地址的BAT执行脚本

这篇文章给大家分享的是有关如何实现一键自动更改本机IP地址的BAT执行脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。请把复制下面的脚本,另存为.bat文件,把其中的子网掩码,网关,IP,DNS等信息修改成你的
2023-06-08

如何实现输出执行操作和打印日志的shell脚本

这篇文章主要为大家展示了“如何实现输出执行操作和打印日志的shell脚本”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现输出执行操作和打印日志的shell脚本”这篇文章吧。cat /mnt
2023-06-09

如何实现可以修改脚本自身运行次数的vbs

小编给大家分享一下如何实现可以修改脚本自身运行次数的vbs,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:Const n = 1 Dim f, a, s,
2023-06-08

如何使用Linux中shell脚本实现FTP定时执行批量下载指定文件

小编给大家分享一下如何使用Linux中shell脚本实现FTP定时执行批量下载指定文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用FTP定时批量下载指定文件
2023-06-09

使用Zabbix实现动态执行监控采集脚本的原理是什么

使用Zabbix实现动态执行监控采集脚本的原理是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实现原理:使用文件服务器统一存放和管理监控脚本,在zabbix
2023-06-06

如何使用vbs实现解密base64加密的脚本

这篇文章主要为大家展示了“如何使用vbs实现解密base64加密的脚本”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用vbs实现解密base64加密的脚本”这篇文章吧。代码如下:Funct
2023-06-08

如何使用Python开发游戏运行脚本实现模拟点击

小编给大家分享一下如何使用Python开发游戏运行脚本实现模拟点击,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、Android模拟器的选择目前市面上有很多An
2023-06-25

如何实现监视磁盘使用情况的Shell脚本

这篇文章将为大家详细讲解有关如何实现监视磁盘使用情况的Shell脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。monitordisk.sh如下 代码如下:#!/bin/bash #Updated:20
2023-06-09

Linux下如何使用Shell脚本实现进程监控的流程

这篇“Linux下如何使用Shell脚本实现进程监控的流程”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux下如何使用
2023-07-05

如何实现用来记录登录后使用命令的shell脚本

这篇文章主要介绍了如何实现用来记录登录后使用命令的shell脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:#/bin/bash# history#把以下代码直接
2023-06-09

编程热搜

目录