关于取消延时

关于取消延时

js是单线程语言,setTimeout被调用后才会返回一个计划执行事件的ID,既然都被调用了,为什么不是直接执行里面的脚本,而是去执行在setTimeout语句后的clear函数?还有取消超时是取消setTimeout设置的延时时间,那里面的脚本不该失去延时影响立即执行了,为什么整个setTimeout语句里的所有脚本都不执行了?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
正在想名字呢 2019-01-06 10:57:24

时间延迟不能被保证。什么意思,就是说你这样写setTimeout(fn, 500)并不代表fn肯定在500毫秒之后马上就执行,延迟很可能会更长。因为 JavaScript 是单线程语言,所有的异步事件(包括计时器、鼠标事件或者一个 XMLHttpRequest 完成)仅仅当程序执行期间有缺口的时候才会执行,不是你规定了什么时候就什么时候执行,要知道程序员不是万能的,你写的东西最终还是要看浏览器脸色的。那超时调用,本身就延迟执行,在还没到你设置的延迟时间的时候代码就执行到了就取消超时调用的代码了,这个时候,当然不会执行了

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师