JS理論:調用棧、事件循環、消息隊列(也叫任務隊和回調隊列)、作業隊列(微任務隊列)


一:調用棧是個什么鬼東西,它具有棧的屬性--后進先出
先看一段簡單的JS代碼:
const second = function(){
console.log('hello there');
}
const first = function() {
console.log('hi,first');
second();
}
console.log('The Start');//直接輸出就是直接進棧,執行完后 出棧
first();//方法先進棧,執行完內部程序,最后出棧
console.log('The End');

二:事件循環又是何方妖孽?
形象來說,他和調用棧一樣存放的都是要執行的程序。不同的是,只有調用棧里面的才會被執行。
所以,事件循環回去判斷調用棧里面的事件是否為為空,就是執行完了沒?要是執行完了,就有坑位,事件循環里面的事件就會塞入調用棧。

三:消息隊列
消息隊列里面放的是一些待觸發執行的方法,如點擊事件,當觸發之后,會被通知主線程去執行
(為什么只能去主線執行?因為JS是單線程的,只有在主線程上面的才能被執行,消息隊列就是不在主線程,消息隊列里面的想被執行只能去通知主線程)

四:工作任務
他的里面執行的方法優先級高於消息隊列里面的回調函數
console.log('The Start');//工作任務
const first = function() {
setTimeout(function (){
console.log('hi,first')//消息隊列里面的回調函數
},0)
}
first();
console.log('The End');//工作任務
執行結果為:
The Start
The End
hi,first


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM