2014-03-30 26 views
1

我有這樣的代碼

var base_url = 'http://api.zxc.loc'; 
var questions = []; 

function get_question(){ 
    if(!questions.lenght){ 
     $.get(base_url + '/api/questions', function(data){ 
      questions = data; 
      console.log('get_question', questions); // GOOD, return [Object, Object ... etc ... ] 
     }, 'json') 
    } 
    console.log('get_question_2', questions); // BAD return empty array [] 

    /* var question = questions[0]; 
    delete questions[0]; 
    return question; */ 
} 

怎麼可以看到,在$不用彷徨questions變量不是空的,但經過$不用彷徨,questions是空的!

爲什麼?謝謝

+1

簡單的回答你不能這樣做,因爲Ajax請求是異步的 –

回答

0

這就是AJAX的工作原理。在您的代碼get_question_2將被記錄在get_question之前。一旦發出ajax調用,代碼將繼續執行(至get_question_2)。然後返回一個ajax調用,你的函數中的代碼(即get_question)將被執行。

總而言之,一旦ajax調用完成並且ajax調用返回數據,就會立即調用get_question_2的日誌。