作者回复: 很赞,学安全一定要知道why,知道why才知道how!
等到了我们专栏的安全篇时,这套理论再结合实践就完美了。
作者回复: open方法仅仅是配置数据,没有任何真实的连接产生,所有连接阶段都是在send之后
作者回复: fetch采用了promise来封装,在使用方式上更强现代化,同时还原生支持async/await。在chromium中,fetch是完全重新实现的,和xmlhttprequest没有什么关系!
在项目中推荐使用fetch
作者回复: 后面三节
微任务
Promise
async/await
作者回复: 通过这些实践理解安全问题是个好方法,最好还要搞清楚为什么有这种或者那种的安全问题,这样我们对安全问题就会融会贯通。
作者回复: Promise的resolve和reject会创建微任务。
还有MutationObserver,如果监听了某个节点,那么通过DOMAPI修改这些被监听的节点也会产生微任务。
作者回复: 延时队列中的任务包含JS通过定时器设置的回调函数、还有一些浏览器内部的延时回调函数。 它们属于宏任务!
另外正常的消息队列中的任务也属于宏任务!
所以通常我说放入消息队列就是指放入了宏任务队列(包括了延时队列或者正常的消息队列)
因为分开来描述会有点啰嗦!
作者回复: 进程间通信,比如浏览器进程需要网络进程下载数据,浏览器进程就是通过IPC告诉网络进程需要下载哪些数据,网络进程接收到之后才会开启下载流程
作者回复: 不是,宏任务,定时器产生的任务都会保存到延时队列中