在JavaScript中,宏任務是一種異步執行的機制。宏任務的執行順序不是立即執行,而是將任務放入任務隊列中,當當前執行的任務執行完畢后,再將任務隊列中的任務逐個執行。下面我們來具體了解一下JavaScript中的宏任務。
宏任務可以分為兩類:同步任務和異步任務。同步任務會立即執行,而異步任務則需要先加入任務隊列,等待當前線程的處理完成后再執行。在JavaScript中,常見的宏任務有定時器任務、事件、XHR請求等。
下面我們來具體介紹一下JavaScript中各種宏任務。
1. 定時器任務
setTimeout(() => { console.log('Hello, World!'); }, 1000);
上述代碼中,setTimeout函數會在指定的時間后將回調函數放入任務隊列中,待到任務隊列中的任務被執行時,才會去執行回調函數。
2. 事件任務
let btn = document.querySelector('#btn'); btn.addEventListener('click', () => { console.log('Clicked!'); })
在上面的代碼中,當用戶點擊按鈕后,事件處理程序會被加入到任務隊列中,在當前任務執行結束后,才會執行按鈕的事件處理程序。
3. XHR請求
let xhr = new XMLHttpRequest(); xhr.open('GET', '/api/data'); xhr.send(); xhr.onreadystatechange = function() { if(xhr.readyState === 4) { console.log(xhr.responseText); } }
上述代碼中,當XMLHttpRequest對象發起GET請求后,會立即返回,并將onreadystatechange事件處理程序加入任務隊列中,待到任務隊列中的任務被執行時才會去執行事件處理程序。
總之,宏任務在JavaScript中扮演著非常重要的角色,它們是JavaScript異步編程的基礎。我們需要理解宏任務的執行機制,經常使用在編寫JavaScript代碼中。