【问题标题】:Async Get Request return true [duplicate]异步获取请求返回 true [重复]
【发布时间】:2015-09-29 12:33:56
【问题描述】:

我有代码:

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 有关吗?

任何帮助将不胜感激。

【问题讨论】:

  • 因为 $.get 是 asynchronous -venue_exists 的返回值是undefined ...这是falsey - 我很惊讶你的警报没有来 C 然后 B ...注意:永远不要使用 alert 来调试代码,尤其是异步代码,它会搞砸你认为正在发生的事情

标签: javascript jquery asynchronous get


【解决方案1】:

是的,这是因为 ajax 是异步的。当您调用venue_exists 时,它会返回未定义。
如果您需要进行该检查,则需要同步调用它。

function venue_exists(instagramUserID) {
   return JSON.parse($.ajax({
     url: '/venues/' + instagramUserID,
     type: "GET",
     dataType: "json",
     async: false
}).responseText);}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-01
    • 2015-04-07
    • 1970-01-01
    • 2021-03-31
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多