1

我想做一个支持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?。

4

1 回答 1

3

您应该返回一个(已解决的)jQueryDeferred对象。jQuery 的 AJAX 函数返回的jqXHR对象也派生自Deferred,因此您的函数的“接口”将是干净的 - 您的函数Deferred在任何情况下都将返回 a。

你可以做这样的事情(只是一个例子,适应你的用例):

function checkAndReturn(){
    if (global.id){
        return $.Deferred().resolve(global.id);
    }
    else {
        return $.get("http://someurl.com", null, function(){...})
    }
}

jsFiddle 演示

于 2014-02-26T13:17:25.333 回答