javascript - 此 jQuery getJSON AJAX 调用的回调方法存在问题

标签 javascript jquery ajax asynchronous callback

我有一个实用程序 .js 文件,可以通过 Ajax 获取一些数据。现在这个实用方法不知道谁会调用它。

因此,当 Ajax 异步完成时,它需要将一个对象发送回调用者。我不知道该怎么做:(

这是我的代码...

function someMethod(a, b, c) {
    // ... stuff ...

    // Now fire it off, asynchronously!
    var request = $.getJSON(url, function (jsonResult) {
        var result =
        {
            json: jsonResult,
            contentLength: request.getResponseHeader("Content-Length")
        };

        // TODO: Now return this result to the caller.
    });
}

当然,我不能使用return result;,因为这是异步的。我觉得我需要传入一个参数,该参数是上面的 ajax 代码需要在结果异步完成时调用的函数。只是不知道如何..因为记住..这是方法不知道谁在调用它..所以它不知道任何其他方法和东西。

请问有什么想法吗?

最佳答案

你是对的。您需要将函数传递给“someMethod”,以便可以将数据返回给它。根据回调函数的作用,您可能还需要使用 call 或 apply 方法正确设置其上下文。 “上下文”是“this”关键字将在回调函数中设置的内容。

如果您的回调函数没有对关键字“this”进行任何引用,那么您可以忽略 call() 或 apply() 的使用,而只像第二个示例中那样调用该函数。 (例如回调(结果));

function someMethod(a, b, c, callback, context) {
    // ... stuff ...

    // Now fire it off, asynchronously!
    var request = $.getJSON(url, function (jsonResult) {
        var result =
        {
            json: jsonResult,
            contentLength: request.getResponseHeader("Content-Length")
        };

        // Now return this result to the caller. With the context set
        callback.call(context, result);

        // Example of callback without setting the context
        //callback(result);
    });
}

关于javascript - 此 jQuery getJSON AJAX 调用的回调方法存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4242774/

相关文章:

jquery - 显示 : table-cell with text-align: center

javascript - JS 从 CSV 创建不同的数组

javascript - 使用生成器在 AngularJS 中使用 ng-repeat 进行迭代无法按预期工作

javascript - 变量值javascript的大写首字母

php - 使用 javascript 和 AJAX 进行数据库过滤

javascript - 停止 javascript onclick 'page jumping'

javascript - Select2 - 无限滚动不加载带有远程数据的下一页

javascript - 使用 Javascript 从 HTML 中过滤和提取

javascript - 输入类型 ="file"设置base64图像数据

javascript - 无法将 Google 地理编码数据移至 Django 表单