0
我有一個函數(所有不相關的部分被省略),它定義了一個全局變量window.playerLibrary
。當我在函數本身中檢查window.playerLibrary
(`var check#1)我得到一個值,如果我在ajax調用之外檢查它是未定義的,如果在調用函數後檢查它,則不確定:全局變量未定義
function generateAllCards() {
$.ajax({
type: "POST",
url: "processGame",
data: {
mode: "generateCards"
},
dataType: "JSON",
success: function(data) {
window.playerLibrary = data.playerLibrary;
// var check #1
console.log(window.playerLibrary);
}
});
// var check #2
console.log(window.playerLibrary);
}
generateAllCards();
// var check #3
console.log(window.playerLibrary);
因爲我輸入這個,我懷疑原因是,因爲它是在ajax調用中定義的,所以var check#2和#3順序發生,而var check#1沿着它們的一側發生,因此定義的變量沒有被捕獲。
如果這是正確的,是有辦法解決這一問題?
它是什麼你想解決?按預期工作:) – npup
這是一個異步問題。在發生ajax調用時,變量的第2次和第3次使用不能保證存在。 – mariocatch
你基本上是在訂購一個送貨披薩,並且很難過,只要你點擊訂單按鈕就不能吃。異步調用需要時間來運行。 – epascarello