1.异步的概念
任何时候,只要把一段代码包装成一个函数,并指定它在响应某个事件(定时器、鼠标点击、Ajax响应等)时执行,即在这个程序中引入了异步机制。
2.事件循环
eg:js程序发出了一个Ajax请求,从服务器获取一些数据,我们在一个函数(回调函数)中设置好响应代码,然后js引擎就会通知宿主环境“当你完成网络请求,拿到了数据,请调用这个回调函数吧”。然后浏览器会设置侦听来自网络的响应,拿到想要的数据之后,就会把这个回调函数插入到事件循环中。
var eventLoop = [];
var event;
while(true){
if(eventLoop.length>0){
event = eventLoop.shift();
try{
event();
}catch(err){
reportError(err);
}
}
}
3.并行线程
异步是关于现在和未来的时间间隙,而并行是能同时发生的事情。
并行:进程和线程独立运行,并可能同时运行。在不同的处理器,甚至不同的计算机,多个线程能共享单个进程