Javascript 从匿名异步函数返回数据?
考虑:Javascript 从匿名异步函数返回数据?,javascript,jquery,asynchronous,return,anonymous,Javascript,Jquery,Asynchronous,Return,Anonymous,考虑: function ajaxCall(url, callback) { $.ajax({ type: "GET", url: url, success: function (data) { // <-- fail point: where does the returned data go, now? // do stuff with data if ( callback ) {
function ajaxCall(url, callback) {
$.ajax({
type: "GET",
url: url,
success: function (data) { // <-- fail point: where does the returned data go, now?
// do stuff with data
if ( callback ) {
var ret = callback();
if ( ret !== undefined ) {
return ret;
}
}
}
});
}
function fooBar() {
return ajaxCall('some/url', function () {
// do stuff
return some_value;
}
}
函数ajaxCall(url,回调){
$.ajax({
键入:“获取”,
url:url,
成功:函数(数据){/您不能像这样异步使用调用,回调将在调用函数很久以后返回后运行。相反,您需要做的是调用需要数据作为回调的一部分(或整个)的函数,例如:
function ajaxCall(url, callback) {
$.ajax({
type: "GET",
url: url,
success: callback
});
}
function fooBar() {
ajaxCall('some/url', function (data) {
functionThatNeedsData(data);
});
}
这只是一个例子来说明发生了什么,实际上可能是:
function fooBar() {
$.get('some/url', functionThatNeedsData);
}
这只是调用需要数据的函数,该函数将从请求中获取数据作为第一个参数……因此,一旦服务器响应数据,您就将数据传递到需要执行的位置,并使用该数据执行其余工作。您不能像这样异步使用调用,回调将在您的cal之后运行ling函数早就返回了。相反,您需要做的是调用需要数据作为回调的一部分(或整个)的函数,例如:
function ajaxCall(url, callback) {
$.ajax({
type: "GET",
url: url,
success: callback
});
}
function fooBar() {
ajaxCall('some/url', function (data) {
functionThatNeedsData(data);
});
}
这只是一个例子来说明发生了什么,实际上可能是:
function fooBar() {
$.get('some/url', functionThatNeedsData);
}
这只是调用需要数据的函数,该函数将从请求中获取数据作为第一个参数…因此,一旦服务器响应数据,您就将其传递到需要执行的位置,并使用该数据执行其余工作。等等,这甚至不是有效的JavaScript…是的,抱歉。$.ajax
无法传递从我的脑海中浮现到屏幕上。啊,我明白了。我想这一定是复制粘贴错误。:)等等,这甚至不是有效的JavaScript…是的,对不起。$.ajax
无法从我的脑海中传到屏幕上。啊,我明白了。我想这一定是一个复制粘贴错误。:)但我希望该函数返回数据!哦,好吧,我只需要做很长一段时间…@passcod-我不确定该说什么…这就是异步调用的工作方式,如果你可以返回,它们将是同步的:)正是。但是现在我需要添加更多的异步性来获得我想要的…即自定义事件。虽然这个答案是正确的。但是我希望该函数返回数据!哦,好吧,我只需要做很长的一段路…@passcod-我不确定该说什么…如果你可以的话,这就是异步调用的工作方式反过来,它们将是同步的:)正是。但现在我需要添加更多的异步性来获得我想要的…即自定义事件。不过,这个答案是正确的。