gpt4 book ai didi

javascript - 在从函数返回之前等待 AJAX 完成?

转载 作者:数据小太阳 更新时间:2023-10-29 03:47:58 25 4
gpt4 key购买 nike

我有以下内容

function doAjax()
{
var result = false;
$.ajax(url, data)
.done(function(){
// Do a bunch
// of computation
// blah blah blah
result = true;
}).fail(function(){
result = false;
});
return result;
}

function doSomething()
{
if ( doAjax() == true )
console.log('success');
else
console.log('failed');
}

function doSomethingElse()
{
if ( doAjax() == true )
console.log('success');
else
console.log('failed');
}

我有一个运行一些 ajax 的函数,然后返回 true 或 false,这取决于 ajax 是否成功。我从代码中的多个位置调用了这个 ajax 函数。

因为函数在 ajax 完成之前结束,所以它总是返回 false。我该如何避免这种情况?

我读到一些建议我在函数中执行 return $.ajax() 然后移动 .done().fail( ) 函数到我的 doSomething()doSomethingElse() 函数。但是,在我的 .done() 方法中,我进行了一系列计算。很多代码。所以问题是,如果我将 .done() 函数移动到我的其他函数,我将复制一堆代码。

如何避免这种情况?只需将计算包装到它自己的函数中并在需要时调用它?

最佳答案

重组您的代码以使用回调而不是返回,就像这样...

function doAjax(callback)
{
$.ajax(url, data)
.done(function(){
// Do a bunch
// of computation
// blah blah blah
callback(true);
}).fail(function(){
callback(false);
});
}

function doSomething()
{
doAjax(function(result){
if (result == true )
console.log('success');
else
console.log('failed');
});
}

function doSomethingElse()
{
doAjax(function(result){
if (result == true )
console.log('success');
else
console.log('failed');
});
}

关于javascript - 在从函数返回之前等待 AJAX 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25520261/

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