位置: 编程技术 - 正文

Js中setTimeout()和setInterval() 何时被调用执行的用法(js的settimeout方法)

编辑:rootadmin

定义setTimeout()和setInterval()经常被用来处理延时和定时任务。setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则可以在每隔指定的毫秒数循环调用函数或表达式,直到clearInterval把它清除。从定义上我们可以看到两个函数十分类似,只不过前者执行一次,而后者可以执行多次,两个函数的参数也相同,第一个参数是要执行的code或句柄,第二个是延迟的毫秒数。很简单的定义,使用起来也很简单,但有时候我们的代码并不是按照我们的想象精确时间被调用的,很让人困惑简单示例看个简单的例子,简单页面在加载完两秒后,写下Delayed alert!看起来很合理,我们再看个setInterVal()方法的例子页面每隔1秒记录一次当前时间(分钟:秒:毫秒),记录十次后清除,不再记录。考虑到代码执行时间可能记录的不是执行时间,但时间间隔应该是一样的,看看结果为什么时间间隔几乎是毫秒,但不精确,这是为什么呢?原因在于我们对JavaScript定时器存在一个误解,JavaScript其实是运行在单线程的环境中的,这就意味着定时器仅仅是计划代码在未来的某个时间执行,而具体执行时机是不能保证的,因为页面的生命周期中,不同时间可能有其他代码在控制JavaScript进程。在页面下载完成后代码的运行、事件处理程序、Ajax回调函数都是使用同样的线程,实际上浏览器负责进行排序,指派某段程序在某个时间点运行的优先级。我们把效果放大一下看看,添加一个耗时的任务我们又加入了一个定时任务,看看结果这下效果明显了,差距甚至都超过了3秒,而且差距很不一致。我们可以可以把JavaScript想象成在时间线上运行。当页面载入的时候首先执行的是页面生命周期后面要用的方法和变量声明和数据处理,在这之后JavaScript进程将等待更多代码执行。当进程空闲的时候,下一段代码会被触发除了主JavaScript进程外,还需要一个在进程下一次空闲时执行的代码队列。随着页面生命周期推移,代码会按照执行顺序添加入队列,例如当按钮被按下的时候他的事件处理程序会被添加到队列中,并在下一个可能时间内执行。在接到某个Ajax响应时,回调函数的代码会被添加到队列。JavaScript中没有任何代码是立即执行的,但一旦进程空闲则尽快执行。定时器对队列的工作方式是当特定时间过去后将代码插入,这并不意味着它会马上执行,只能表示它尽快执行。知道了这些后,我们就能明白,如果想要精确的时间控制,是不能依赖于JavaScript的setTimeout函数的。重复的定时器使用 setInterval() 创建的定时器可以使代码循环执行,到有指定效果的时候,清除interval就可以,如下例但这个方式的问题在于定时器的代码可能在代码再次被添加到队列之前还没有执行完成,结果导致循环内的判断条件不准确,代码多执行几次,之间没有停顿。不过JavaScript已经解决这个问题,当使用setInterval()时,仅当没有该定时器的其他代码实例时才将定时器代码插入队列。这样确保了定时器代码加入到队列的最小时间间隔为指定间隔。这样的规则带来两个问题1.1. 某些间隔会被跳过2.2.多个定时器的代码执行之间的间隔可能比预期要小为了避免这两个缺点,我们可以使用setTimeout()来实现重复的定时器这样每次函数执行的时候都会创建一个新的定时器,第二个setTimeout()调用使用了agrument.callee 来获取当前实行函数的引用,并设置另外一个新定时器。这样做可以保证在代码执行完成前不会有新的定时器插入,并且下一次定时器代码执行之前至少要间隔指定时间,避免连续运行。这段定时器代码每次执行的时候,把一个div向右移动5px,当坐标大于的时候停止。

推荐整理分享Js中setTimeout()和setInterval() 何时被调用执行的用法(js的settimeout方法),希望有所帮助,仅作参考,欢迎阅读内容。

Js中setTimeout()和setInterval() 何时被调用执行的用法(js的settimeout方法)

文章相关热门搜索词:js中settimeout和setInterval区别,js中settimeout和setInterval区别,js中settimeout和setInterval区别,js settimeout和setinterval,js中setmonth,js settimeout和setinterval,js中settimeout和setInterval区别,js中settimeout和setInterval区别,内容如对您有帮助,希望把文章链接给更多的朋友!

关于JavaScript与HTML的交互事件 JavaScript和HTML的交互是通过事件实现的。JavaScript采用异步事件驱动编程模型,当文档、浏览器、元素或与之相关对象发生特定事情时,浏览器会产生事

关于JavaScript中string 的replace replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。语法:string.replace(subStr/reg,replaceStr/function)第一个参数可

深入理解JavaScript 闭包究竟是什么 1.简单的例子首先从一个经典错误谈起,页面上有若干个div,我们想给它们绑定一个onclick方法,于是有了下面的代码divid="divTest"span0/spanspan1/spanspan2/spansp

标签: js的settimeout方法

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

上一篇:JavaScript在XHTML中的用法详解(在js里写html)

下一篇:关于JavaScript与HTML的交互事件(以下关于js说法错误的是)

  • 税收优惠政策落实情况报告
  • 视同销售填在申报表哪一栏
  • 当期可抵扣进项税额加计5%抵减应纳税额
  • 只有费用没有收入成本怎么填所得税
  • 增值税普票没有校验码
  • 金税盘付费
  • 企业职工福利费扣除标准
  • 停车场吗
  • 销售退回怎么开票
  • 开户许可证怎么下载电子版
  • 电子税务局怎么变更财务负责人
  • 向其他股东购买股权
  • 代缴社保缴费基数是怎么算的
  • 环境保护税法是什么意思
  • 个体户生产经营费用与家庭生活费用无法划分
  • 公司租房可以抵扣个人所得税吗
  • 贷款资金取现就无法追查了吗
  • win7安装netframework4.5
  • php密码加密和解密
  • office进程
  • 对公帐户定期存款利率
  • 制造费用主要包括哪些费用
  • 实收资本一定要打进公司对公户吗
  • php跨域解决方案
  • 企业缴纳职工社保是否可以缴纳三险
  • PHP:is_executable()的用法_Filesystem函数
  • 固定资产转卖怎么开票
  • 个体工商户税收标准2023年
  • 免交的增值税要交所得税吗
  • js进阶视频教程
  • mkv视频制作
  • python拆分文本文件
  • dedecms官网
  • 软件成本如何归类管理
  • 旅行社代订的机票可以退吗
  • 一般纳税人进项大于销项账务处理
  • 帝国cms真的很好用
  • 社保员工全额承担怎么写分录
  • 增值税扣税凭证进项税额转出情况核实函
  • 保证金存款账户需要销户吗
  • 无票收入要交企业所得税吗
  • 暂估入库价格是否含税
  • 超过规定标准扣几分罚款
  • 金税盘维护费应该在那个表填写
  • 其他权益工具投资是金融资产吗
  • 农民专业合作社法
  • 银行贴息一般多久能到账
  • 公司在银行买的金条怎么入账
  • 所得税汇算清缴需要调增的项目
  • 售后回租租赁合同买车有效吗
  • 出口视同内销如何申报?
  • 清算后剩余财产股东拒收怎么办
  • 免税收入计入起征点吗
  • 去年的凭证今年未入账
  • 史上最简单的皮筋枪
  • sql server备份方法
  • sql的all和any
  • vmmem进程是什么
  • centos which
  • linux批量替换文件夹名称
  • windows7怎么打开记事本
  • win8桌面键盘
  • application error message 漏洞验证
  • 虚拟网卡在哪里设置
  • win7安装flash提示连接失败
  • win7复制粘贴快捷键经常失效
  • win7电脑无法上网 连接正常
  • jquery源码分析笔记
  • linux bash中too many arguments问题的解决方法
  • js实现时间
  • cmd文件操作基本命令清单
  • 深入python3
  • Python中模块和包的区别
  • Unity3D之iTween
  • 安卓xml存储方式
  • 安卓开发上下滑动功能界面
  • 每年个人所得税2万工资多少
  • 贵州省地方税务局税源管理平台(二次)招标合同公告
  • 皖事通新农合缴费征收方式是什么?
  • 奔驰g500落地多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设