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后输出
至於那個上下文的概念,我理解的並不透徹 不知道應該算在那一塊裡面,希望大牛給建議。 。歡迎拍磚或踩,請告知錯誤的地方。 。嘿