gpt4 book ai didi

javascript - 从匿名异步函数返回数据?

转载 作者:行者123 更新时间:2023-11-30 23:41:51 26 4
gpt4 key购买 nike

考虑:

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;
}
}

对,所以基本上,我想保留请求的异步性,这样浏览器就不会挂起,但最终仍然返回一个值...这是一个简化的示例,尽管我可能可以简化它更多。

事实上,我看到的唯一障碍是 $.ajax 之间的过渡。及其 success:匿名函数。

哼。

最佳答案

您不能像这样异步使用调用,回调会在您的调用函数早已返回之后稍后运行。相反,您需要做的是调用需要数据作为(或整个)回调的一部分的函数,例如:

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);
}

这只是调用您的 functionThatNeedsData ,它从请求中获取数据作为第一个参数...因此,一旦服务器响应数据,您就可以将其传递到需要执行的位置并使用该数据完成其余工作。

关于javascript - 从匿名异步函数返回数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4353070/

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