定时器真的是定时执行的吗?
- 定时器并不能保证真正定时执行。
- 一般会延迟一丁点(可以接受),也有可能延迟很长时间(不能接受)。
定时器回调函数是在分线程执行的吗?
在主线程执行的,js是单线程的。
定时器是如何实现的?
事件循环模型
如何证明js执行是单线程的?
- setTimeout()的回调函数 是在主线程执行的。
- 定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行。
为什么js要用单线程模式,而不用多线程模式?
- JavaScript的单线程,与它的用途有关。
- 作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM
- 这决定了它只能是单线程,否则会带来很复杂的同步问题
代码的分类
初始化代码
回调代码
js引擎执行代码的基本流程
先执行初始化代码:包含一些特别的代码 回调函数(异步执行)
- 设置定时器
- 绑定监听
- 发送ajax请求
后面在某个时刻才会执行回调代码
每日一句
成长是一场和自己的比赛,不要担心别人会做得比你好,你只需要每天都做得比前一天好就可以了。