異步 AJAX 回調返回值無法作為外層函數返回值 (外層已執行完畢)。
function getTotalIntegral() {
var rst = null;
$.ajax({
url: 'api/integral',
async: false, // 關鍵:同步
success: function(data) { rst = data.integral; }
});
return rst;
}
// 回調風格
function getTotalIntegral(callback) {
$.get('api/integral', function(data) { callback(data.integral); });
}
getTotalIntegral(function(val) { console.log(val); });
// Promise 風格 (jQuery 3+)
function getTotalIntegral() {
return $.get('api/integral').then(res => res.integral);
}
getTotalIntegral().then(val => console.log(val));
**棄用 `async: false`**,瀏覽器控制台會警告且可能凍結頁面。全面拥抱 Promise/async-await。