Jquery:返回之前等待回调

标签 jquery asynchronous callback return

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

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

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

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

另一方面,在回调中执行我需要的内容会破坏我的 MVC 分割:此代码位于模型中,我想在 Controller 中使用结果对象。

临时解决方法是

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

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

还有其他解决办法吗?

最佳答案

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

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

关于Jquery:返回之前等待回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2081807/

相关文章:

javascript - 显示任意数字输入的数据

c# - 当第一个异步方法返回 true 时返回 true

javascript - Node js 中的回调函数是同步执行的吗?

javascript - jQuery 检查是否选中了前 7 个复选框中的一个然后隐藏元素

javascript - $(window).width() 在 IE9 中不起作用

jquery float 条形图多系列

node.js - 如何使用 Node、Async 和 Mongoose 计算作用域变量的总和?

asynchronous - 如何在模板( Action )函数中传递异步变量?

c# - 从 C# 回调到 VBScript

JavaScript:回调访问另一个参数