位置: 编程技术 - 正文

setTimeout和setInterval的深入理解(settimeout和setinterval在安卓机无效)

编辑:rootadmin
大概半年前发表过一篇关于setTimeout和setInterval的文章,但是现在回去仔细一看发现其实存在很多不足以及错误。事实上,setTimeout和setInterval并没有我们字面上理解的那么简单。要真正掌握并理解这两个方法,还得从javascript的单线程机制说起。 【开门见山】setTimeout和setInterval是如何工作的呢? 我们知道,js是单线程执行的。所以其实setTimeout和setInterval所谓的“异步调用”事实上是通过将代码段插入到代码的执行队列中实现的。 而如何计算插入的时间点呢?自然是要用到我们所说的timer,也就是计时器。当执行setTimeout和setInterval的时候,timer会根据你设定的时间“准确”地找到代码的插入点。当队列“正常”地执行到插入点时,就触发timer callback,也就是我们设定的回调函数: 上面这个例子就是我们通常的用法,应该容易理解。可是,timer真的能那么准确么?代码队列的执行真的能那么正常么? 【斩草除根】重新认识所谓的“异步” 刚刚已经知道,事实上setTimeout和setInterval只是简简单单地通过插入代码到代码队列来实现代码的延迟执行(或者说异步执行)。但是事实上所谓的异步只是一个假象——它同样运行在一个线程上! 那么问题就来了,要是在代码插入点前的代码执行时间超过了传入setTimeout或setInterval的设定时间会怎样呢?让我们来看看这段代码: 你觉得这段代码的执行结果是什么呢?答案是,alert永远不会出现。 这是为什么呢?因为,while这段代码没有执行完,插入在后面的代码便永远不会执行。 综上所述,其实JS终归是单线程产物。无论如何“异步”都不可能突破单线程这个障碍。所以许多的“异步调用”(包括Ajax)事实上也只是“伪异步”而已。只要理解了这么一个概念,也许理解setTimeout和setInterval也就不难了。

推荐整理分享setTimeout和setInterval的深入理解(settimeout和setinterval在安卓机无效),希望有所帮助,仅作参考,欢迎阅读内容。

setTimeout和setInterval的深入理解(settimeout和setinterval在安卓机无效)

文章相关热门搜索词:settimeout和setinterval在用法上的区别,settimeout和setinterval谁快,setTimeout和setInterval,settimeout和setinterval谁快,settimeout和setinterval在用法上的区别,setTimeout和setInterval的区别,setTimeout和setInterval的区别,setTimeout和setInterval的区别,内容如对您有帮助,希望把文章链接给更多的朋友!

javascript内存管理详细解析 介绍低层次的语言,如C,具有低级别的内存管理命令,如:malloc()和free(),需要开发者手工释放内存。然而像javascript这样的高级语言情况则不同,对象

JavaScript对内存分配及管理机制详细解析 你可能听说过JAVA、.NET、PHP这些语言有垃圾回收的内存管理机制,但是很少会听到JavaScript也有自己的内存管理机制,JavaScript同样有着类似的垃圾回收功

javascript中怎么做对象的类型判断 最近在翻看JohnResig的大作《ProJavaScriptTechniques》,里面讲到了如何做javascript的类型判断的问题。文中介绍了两种方式,一种是使用typeof,另一种是使用co

标签: settimeout和setinterval在安卓机无效

本文链接地址:https://www.jiuchutong.com/biancheng/376097.html 转载请保留说明!

上一篇:JavaScript中this的使用详解(javascript中的this属性)

下一篇:javascript内存管理详细解析(js内存条)

  • 小规模企业需要交哪些税
  • 只报税不做账有什么后果?
  • 采购合同缴纳印花税依据
  • 金税四期对建筑的影响
  • 结售汇有金额限制吗
  • 汽车保险专用发票怎么做账
  • 营业账簿是什么意思
  • 周转材料摊销借贷方向
  • 租赁期间怎么算
  • 简易计税收入会计分录
  • 发生销货退回增值税专用发票如何处理
  • 银行付款退回重新开户
  • 购买脚手架报价单
  • 印花税这个月没交怎么办
  • 贷款利息支出必须交税吗
  • 减免所得税额和抵免所得税额的区别
  • 开票码必须输入吗
  • 不动产所占份额
  • 没有库存先开票再发货
  • 采购均价怎么计算
  • 房地产开发企业的土地使用权计入哪里
  • 征地过程中会产生哪些费用
  • 怎么用苹果6splus
  • 苹果手机系统更新在哪里找
  • 职工福利费汇算清缴怎么填写
  • 如何免费获取win11
  • Laravel 5.4中migrate报错: Specified key was too long error的解决
  • 把原材料给别人加工怎么入账
  • 正常运行英文
  • win11怎么用户改名
  • 企业收到分红款是免税收入吗
  • php7.0
  • 担保损失会计分录
  • .hpp是什么文件
  • php如何提高程序运行效率
  • 矿产资源补偿费是什么
  • 享受所得税优惠情况说明
  • 股东分红应该在哪个科目
  • python机器人编程控制
  • 使用php免费发送短信
  • 笨办法学python 3电子书下载
  • 营业外支出科目代码
  • 长期股权投资内部交易抵消
  • python判断字符串为字母
  • 微擎最新破解版
  • 固定资产折旧计算方法公式大全
  • 需要做审计有哪些行业
  • 房地产企业借款利息扣除标准
  • 结转销售成本的凭证需要附件吗
  • 以房抵债会计分录怎么做
  • 托收承付方式销售商品是什么意思
  • 实收资本可以做现金吗
  • 苗木种植发票免税怎么开
  • 现金流量表中支付的各项税费包括
  • sql中索引怎么使用
  • 服务器 安装win10
  • windows Server 2008各版本区别详解
  • linux find 命令详解
  • 高效快捷键
  • win xp怎么样
  • centos搭建服务器
  • mblme是什么进程
  • win8应用商店无法使用
  • 在win7上加装一个硬盘不显示
  • linux rpm -i
  • perl执行linux命令
  • python函数菜鸟教程
  • javascript函数怎么写
  • android更新ui的方式
  • final exam是什么意思
  • windbg调试驱动
  • express框架的优缺点
  • npm镜像是什么意思
  • 横向对比分析两个人关系的意义
  • 使用粗盐热敷十大危害
  • jQuery插件是什么
  • jquery给输入框赋值
  • 购进用于生产的设备会计分录
  • 电子税务局怎么添加开票员
  • 增值税纳税申报表附列资料(三)
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设