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