位置: 编程技术 - 正文

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内存条)

  • 企业税收主要分为哪几类
  • 小微企业应纳税所得额是指什么
  • 上月多计提增值税
  • 非营利组织企业所得税季度申报表
  • 车辆购置税和车船税的区别在哪
  • 个体工商户月销售额超10万怎么报税
  • 增值税发票丢失可以用复印件入账么
  • 职工教育经费中其他费用包括
  • 公司购买手机如何入账
  • 汇算清缴从业人员平均值
  • 销项税的抵扣
  • 空调属于电子设备还是电气设备
  • 软件委托开发合同印花税
  • 个人股权转让未分配利润如何处理
  • 为什么购买的货没有发票
  • 利润总额递延所得税
  • 购入但未开始使用的房产
  • 土地款可以抵扣土地增值税么
  • 分摊材料成本差异率怎么算
  • 公司在外地
  • 免租要怎么交税
  • 三十个生僻字
  • 坏账准备的转回对资产的影响
  • 接受捐赠后会引起
  • 高价转让股份
  • 增值税专票和普票的区别税率
  • 关闭固定在任务栏的功能
  • 将u盘格式化
  • PHP:pg_num_rows()的用法_PostgreSQL函数
  • 桑吉尔夫个人简介
  • jquery教程chm
  • php 包含
  • 农药免税政策文件有哪些
  • mongodb4.0安装教程
  • 定期定额自行申报表
  • 公司的违约金
  • 预提费用汇缴时间怎么算
  • 日常费用明细表格式
  • 专项附加扣除批量上传怎么上传
  • MySQL中使用命令行查看二进制文件
  • 资产负债表其他综合收益
  • 发票抵扣联可以作为凭证吗
  • 非盈利组织接受劳务捐赠怎么入账
  • 共管账户取钱需要多久到账
  • 京东预付是什么意思
  • 公司投资者如何避免风险
  • 经营租赁的房屋计提折旧吗
  • 收到项目资本金怎么入账
  • 公司固定资产明细表
  • 会计账簿的更换和保管有哪些要求
  • sqlserver存储过程返回多个结果集
  • ubuntu怎么把软件放到桌面
  • 如何强制退出当前程序mac
  • xp系统无法安装win7系统
  • centos7.0安装教程
  • centos7如何安装telnet
  • linux执行sh文件显示不存在
  • win7如何整理磁盘
  • win8免密码登录
  • 在linux中使用什么命令可以执行shell脚本
  • 猜猜这关怎么过攻略
  • 好看的css样式代码
  • HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth完全详解
  • python占位
  • 基于javascript的毕业设计
  • nodejs怎么启动服务
  • unity mode
  • unity3d创建模型
  • 访问网页显示脚本错误
  • python做开发
  • 动态页面设计
  • js对象用法
  • 山东省税务局网上办税服务厅
  • 进口消费税怎么入账
  • 发票扫码抽奖用什么软件
  • 天津生育津贴如何查询申请进度
  • 长春市征收中心
  • 电子税务局在线咨询
  • 深圳宝安到揭阳大巴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设