WebAPI:setTimeout
- 浏览器中的setTimeout
- 执行一段异步任务,需要先将任务添加到消息队列中。为了保证回调函数能在指定时间内执行,定时任务的回调函数不能直接添加到消息队列。
- 延迟队列:维护消息队列中需要延迟执行的任务列表。
- 如果当前任务执行时间过久会影响定时器任务的执行。
- 如果setTimeout存在嵌套调用,那么系统会设置最短时间间隔为4毫秒,即一些实时性较高的需求就不适合使用setTimeout,例如动画。
- 未激活的页面,setTimeout执行最小间隔是1000毫秒(目的是为了优化后台页面的加载损耗)。
- 延迟执行时间是有最大值的,超出最大值溢出后,定时器会被立即执行。
- setTimeout中设置回调函数中的this,this是指向全局环境对象。
- 建议使用函数requestAnimationFrame代替setTimeout。
- 浏览器中的XMLHttpRequest
- 提供了向web服务器获取数据的能力。
- 回调函数:将一个函数作为参数传递给另外一个函数,那作为参数的这个函数就是回调函数。
- 同步回调:回调函数在主函数返回之前执行。
- 异步回调:回调函数没有在主函数内部调用。有2种表现形式,形式一:做成一个任务添加到消息队列尾部,形式二:添加到微任务队列中,这样就可以在当前任务的末尾处执行微任务。