| 優點 | 缺點 |
|---|---|
| 代碼線性,易讀寫 直接返回值,無需回調 | 阻塞主執行緒,頁面假死 瀏覽器可能彈出「腳本無響應」 無法並發多個請求 已被標準廢棄(主執行緒除外) |
| 優點 | 缺點 |
|---|---|
| 不阻塞 UI,用戶可繼續操作 可並發多請求 符合現代 Web 標準 | 回調地獄(Callback Hell) 錯誤處理分散 變量作用域易出錯 |
function getRst() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'url', false); // 同步
xhr.send(null);
return xhr.responseText;
}
var r = getRst();
alert(r);
function getRst(callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'url', true);
xhr.send(null);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) callback(xhr.responseText);
};
}
getRst(function(r) { alert(r); });
async function getRst() {
const resp = await fetch('url');
return resp.text();
}
getRst().then(r => alert(r)).catch(console.error);
**生產環境嚴禁同步 AJAX**。統一使用 fetch/axios + async/await,配合統一錯誤處理攔截器,代碼既線性又非阻塞。