我想创建一个支持done
但不返回ajax的函数。
function checkAndReturn(){
if(global.id){
return global.id; // the problem might be here
}else{
return $.get("http://someurl.com",null,function(){...})
}
}
checkAndReturn.done(function(){...})
如果global.id
不可用,则global.id
有效,但如果xhr
可用则无效。
我想我应该返回任何其他对象并将我的数据打包到该对象以完成我的工作,也许{{1}}?。
答案 0 :(得分:3)
您应该返回一个(已解决的)jQuery Deferred
对象。 jQuery的AJAX函数返回的jqXHR
对象也来自Deferred
,因此函数的“接口”将是干净的 - 在任何情况下,您的函数都将返回Deferred
。 / p>
你可以做这样的事情(只是一个例子,根据你的用例进行调整):
function checkAndReturn(){
if (global.id){
return $.Deferred().resolve(global.id);
}
else {
return $.get("http://someurl.com", null, function(){...})
}
}