2015-11-04 223 views
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沿着它們的一側發生,因此定義的變量沒有被捕獲。

如果這是正確的,是有辦法解決這一問題?

+1

它是什麼你想解決?按預期工作:) – npup

+0

這是一個異步問題。在發生ajax調用時,變量的第2次和第3次使用不能保證存在。 – mariocatch

+1

你基本上是在訂購一個送貨披薩,並且很難過,只要你點擊訂單按鈕就不能吃。異步調用需要時間來運行。 – epascarello

回答

0

你需要做什麼playerlibrary成功回調中,或者從那裏調用函數,一旦知道該值已被分配