标签:tin val 两种 int out task inter 语言 on()
程序中设置两个线程:一个负责程序本身的运行,称为"主线程";另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被称为"Event Loop线程"(可以译为"消息线程")。
所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。
具体的例子:
console.log('Hi');
setTimeout(function() {
console.log('callback');
}, 0);
console.log('Bye');
//Hi,Bye,callback
事件循环不太理解的可以去看这篇有动图解释:https://www.jb51.net/article/133424.htm
在JavaScript中,任务被分为两种,一种宏任务(MacroTask),一种叫微任务(MicroTask)。
宿主环境提供的(浏览器和node)
script
全部代码、setTimeout
、setInterval
。语言标准提供的
Promise、await
null
,然后再执行宏任务,如此循环。总结:同步—>微任务—>宏任务
new Promise(function(resolve){
console.log('1');
resolve();
}).then(function(){
console.log('2')
});
setTimeout(function(){
console.log('3')
});
console.log('4');
//1,4,2,3
参考:https://www.cnblogs.com/dajuyiding/p/11355677.html
http://www.ruanyifeng.com/blog/2014/10/event-loop.html
标签:tin val 两种 int out task inter 语言 on()
原文地址:https://www.cnblogs.com/zhoujingguoguo/p/12495623.html