你不知道的异步
2017-12-13 本文已影响7人
Vijay_
异步函数
-
误区:
- 把script代码放到body底部并不是异步执行js代码,仅仅是让页面优先解析然后再解析执行js代码(注意:到js代码执行完之前页面都没有被渲染)
-
能做什么:
- 异步代码(例如:setTimeout)是将代码放入异步调用栈,然后等待执行线程先渲染完页面后(即同步代码执行完,html所有标签解析完)后执行。所以耗时的操作(如xmlHttpRequest,大量计算等)都需要使用异步
-
总结:
- 异步代码其实质就是事件驱动+回调,只不过该"事件"是由浏览器控制触发
-
注意:
-
异步列队其实质还是串行列队,仅仅只是让线程渲染完页面后执行,如果大负荷计算,页面还是会假死(无法点击按钮等。。。)。
-
xmlHttpRequest(ajax)是由浏览器(并发)执行然后通过事件驱动来回调我们的js代码的,并非setTimeout这种简单的放到同步代码后执行。
-