Jak*_*son 9 javascript ajax jquery
我有以下内容
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');
}
Run Code Online (Sandbox Code Playgroud)
我有一个运行一些ajax的函数,然后返回true或false,具体取决于ajax是否成功.这个ajax函数我从我的代码中的多个地方调用.
因为函数在ajax结束之前结束,所以它总是返回false.我该如何避免这种情况?
我所读过的东西暗示我做了return $.ajax()我的功能,然后移动.done()和.fail()功能,我doSomething()和doSomethingElse()功能.但是,在我的.done()方法中,我做了一个BUNCH计算.很多代码.所以问题是,如果我将.done()函数移动到我的其他函数,我复制了一堆代码.
我该如何避免这种情况?只需将计算包装到它自己的函数中并在必要时调用它?
Sor*_*ren 10
重构你的代码以使用回调而不是返回,像这样......
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');
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20024 次 |
| 最近记录: |