0
点赞
收藏
分享

微信扫一扫

为什么js是单线程却又是异步?

Star英 2022-01-11 阅读 90

我觉得下面这两个图很能说明问题:

图 1:

func01 和 func01 被依次交替执行

图 2: func02 内部死循环 所以func01一直在排队

这说明setInterval并不是打开一个线程,而是把func01 func02加入到一个队列里 每次检查到func01时 就查看 上次执行时间,如果距离现在>100那么 就执行func01 否则继续检查下一个函数。

不只是setInterval这种循环执行会造成整个线程阻滞,而是所有函数都会造成线程阻滞

例如下图 我点击按钮之后,整个页面就死了,输入框也不能输入,按钮也点不动:

 这是因为处理 输入框 等控件事件的所有函数都在排队,他们是一个线程绕不过去。

举报

相关推荐

0 条评论