javascript线程问题

一、setTimeout和setInterval的延时问题

1.setTimeout和setInterval的区别

setTimeout(function(){console.log("hello")},100)

100ms或者多于100ms之后输出hello,只执行一次。

setTimeout(function(){console.log("hello")},100)

每隔100m或者多于100ms时间输出hello,一直执行下去除非你主动停止或者浏览器刷新。

2.间隔时间的精确度很小,具体的间隔时间取决于你设置的时间和机器的计算速度,如果机器执行其他任务的时间教程,那么可能要很久才能执行回调函数。

3.while(1){setInterval(function(){console.log("hello")},1000)}

永远都不会输出hello,因为js引擎是单线程的,线程在执行while没空执行其他的函数。

二、界面渲染线程和js渲染线程是互斥的。

1.while(1){var oD = document.createElement("div"); document.getElementsByTagName("body")[0].appendChild(oD);}

document.getElementsByTagName("body")[0].appendChild(oD)这句永远都不会执行,因为这个任务要交给渲染线程去做,但是此时js线程正在运行(while)并且js线程和界面渲染线程是互斥的,他们同时只能有一个线程在运行,所以界面渲染线程没机会运行。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值