javascript完成函数没有ajax调用

时间:2014-02-26 13:09:17

标签: javascript jquery ajax promise jqxhr

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

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(){...})
    }
}

jsFiddle Demo