首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >return AJAX回调return

return AJAX回调return
EN

Stack Overflow用户
提问于 2012-01-28 07:13:16
回答 4查看 21K关注 0票数 8

例如,我有一个函数:

代码语言:javascript
复制
var f1 = function(arg) {
    var a;
    $.ajax({
        ...
        success: function(data) {
            a = f2(data);
            //return a;
        }
    });
    //return a;
}

var f3 = function() {
    a = f1(arg);
}

如何在AJAX获取f1中的data后返回a

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-28 07:16:53

您不能返回ajax请求的结果,因为请求是异步的(而同步ajax请求是一个糟糕的想法)。

最好的办法是将您自己的回调传递到f1中

代码语言:javascript
复制
var f1 = function(arg, callback) {
    $.ajax({
        success: function(data) {
            callback(data);
        }
    });
}

然后像这样调用f1

代码语言:javascript
复制
f1(arg, function(data) { 
           var a = f2(data);
           alert(a);
        }
 );
票数 16
EN

Stack Overflow用户

发布于 2012-01-28 07:17:10

简短、简单的答案是:你不能。

您可以使a成为全局的,但您会受到时间问题的影响。

更好的选择是:

  1. 传入一个回调以在Ajax成功运行,或者
  2. 使用jQuery的.when/.then construct,或者
  3. 只是在jQuery中完成可以使调用同步的工作。请不要。)
票数 1
EN

Stack Overflow用户

发布于 2012-01-28 07:17:38

要做到这一点,最简单的方法是同步ajax调用。这意味着在f1函数中,使用async: false设置ajax调用,以便函数在调用完成并返回数据之前不会继续执行。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9041321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档