2015-09-29 3 views
0

У меня есть код:Асинхронный Получить запрос возвращающие

if (venue_exists(instagramUserID)){ 
    alert('A'); 
}else {        
    alert('C'); 
} 


function venue_exists(instagramUserID) {  
    $.get("/venues/" + instagramUserID, function(json) { 
     if (json.data.success){ 
      alert('B');    
      return true; 
     }   
}, "json"); 

В настоящее время мой результат: B, C

Я запутался, почему этот код не вдаваясь в A, как true в настоящее время вернулся. Связано ли это с asynchronous request?

Любая помощь была бы принята с благодарностью.

+3

, потому что $ .get является ** Асинхронный ** - возвращаемое значение venue_exists является 'undefined' ... что' falsey' - и я удивлен, ваши оповещения не приходят C, то B. .. ПРИМЕЧАНИЕ: никогда не используйте предупреждение для кода отладки, особенно асинхронный код, он закручивает то, что, по вашему мнению, происходит –

ответ

0

Да, это происходит потому, что ajax является асинхронным. Когда вы вызываете event_exists, он возвращает undefined.
Если вам нужна эта проверка, вам нужно позвонить ее синхронно.

function venue_exists(instagramUserID) { 
    return JSON.parse($.ajax({ 
    url: '/venues/' + instagramUserID, 
    type: "GET", 
    dataType: "json", 
    async: false 
}).responseText);} 
Смежные вопросы