Jquery:在返回之前等待回调

时间:2010-01-17 17:06:17

标签: jquery asynchronous callback return

我有一个javascript函数,它要求一些ajax数据并获取一个JSON对象。然后它应该返回对象。

问题是我不知道如何从Ajax回调中返回函数。当然

myFunction: function() {
    $.get(myUrl, function(data) {
        return data;
    });
}

不起作用,因为内部函数返回而不是外部。

另一方面,在回调中执行我需要的东西会破坏我的MVC细分:这段代码在模型中,我喜欢在控制器中使用结果对象。

临时解决方法是

myFunction: function() {
    var result = $.ajax({
        url: myUrl,
        async: true,
        dataType: 'text'
    }).responseText;
    return eval(result);
}

它的缺点是在等待回复时阻塞浏览器(并使用eval,我宁愿避免)。

还有其他解决方案吗?

2 个答案:

答案 0 :(得分:9)

您可以将回调传递给您的函数,以便在数据准备就绪时处理数据:

myFunction: function(callback) {
    $.get(myUrl, function(data) {
        callback( data );
    });
}

答案 1 :(得分:1)

为什么要它返回对象?如果您打算之后使用此对象,更好的方法是使用数据将函数放入回调。