gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:42:13 25 4
gpt4 key购买 nike

我有一个实用程序 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com