1、如题,问一个js机制问题,是否都是等主线程执行完毕以后,才执行异步操作。
2、JavaScript 运行机制详解:再谈Event Loop 大部分人都读过这篇文章,阮老湿说的是:只有主线程执行完毕以后,才会去读取任务队列。
3、今天听说了一个上下文的说法,大概意思是说某个异步操作只等和它是同一个上下文的主线程执行完毕。而不等其他的上下文。今天找了好久,也没找到类似的文章,求人解答!!
过去多啦不再A梦2017-07-05 11:09:37
你把很多东西感觉弄混了,还有阮一峰的文章。。。批判是阅读。。他那文章。。还有很多概念错误的。。
以下是一篇是朴灵的批注:可以参考看一看
朴灵批注版本
nodeJS 官方文档 evenloop process.nextTick timers 关系
我的理解是node 主线程跑线程代码,只有文件I/O,网络I/O,timer才会是异步事件,才会进入异步队列,平常你写的代码都是同步的,
比如你有一下一段程序
setTimeout(function(){
console.log('test');
},10);//本来应该是10ms后输出test
for(var i=0;i<10000000;i++){
//但是这个空的for循环执行了50ms
}
//for占住了主线程,倒地timer 事件已经到达触发条件,但是主线程被占用
//不能去请求完成的事件队列。
//所以test 会在50ms后输出
至于那个上下文的概念,我理解的并不透彻 不知道应该算在那一块里面,希望大牛给建议。。欢迎拍砖或者踩,请告知错误的地方。。嘿嘿