ExtJS 4在不使用回调的情况下等待AJAX​​请求的结果

时间:2014-06-17 07:33:58

标签: javascript ajax extjs callback

我在这里有点情况,我需要帮助。这是我的代码示例:

fn: function () {
    var test = this.ajaxFunction();
    alert(test);
}

ajaxFunction : function () {
    Ext.Ajax.request ({
        url: 'MyServlet',
        params: ...,
        success: function (response) {
            response = Ext.decode(response.responseText);
            return response.myVar;
        }
    });
}

显然,警报会给我一个未定义的结果而不是myVar值。我该如何解决?我知道Ext中的AJAX是异步支持的,无论我在哪里搜索,每个人都告诉我把我的后Ajax逻辑放在回调中。但是正如你在这里看到的那样是不可能的。我需要两个函数fn和ajaxFunction。 ajaxFunction被许多不同的函数调用,因此它需要分开。

我尝试了“异步”配置,但它似乎不起作用。我认为他们已将其删除(至少在ExtJS 4.2.1中)。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您可以将回调函数传递给ajaxFunction

fn: function () {
    this.ajaxFunction(function(response) {
        alert(response);
    });
}

ajaxFunction : function (callback) {
    Ext.Ajax.request ({
        url: 'MyServlet',
        params: ...,
        success: callback
    });
}

这样你就可以重用ajaxFunction,每次只传递一个不同的回调。