没有ajax调用的javascript完成函数

标签 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

最佳答案

您应该返回一个(已解决)jQuery Deferred目的。 jQuery 的 AJAX 函数返回的 jqXHR 对象也是从 Deferred 派生的,所以你的函数的“接口(interface)”将是干净的——你的函数将返回一个 Deferred 在任何情况下。

你可以做这样的事情(只是一个例子,根据你的用例进行调整):

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

jsFiddle Demo

关于没有ajax调用的javascript完成函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22042421/

相关文章:

javascript - Mongoose - 如何从数组元素中删除对象

javascript - 如何使用 jquery/js/css 渐进地突出显示一大块文本

javascript - 如何在 play 框架项目中从 javascript 更新 img 的 src?

javascript - 使用 jquery 时不显示 div

javascript - 更改 div 的类,但不更改其中的跨度

php - 使用 "AJAX"下载 CSV 文件

javascript - 切换 div 的可见性但添加 JavaScript 样式会把它弄乱

javascript - JQuery 停止/暂停 for 循环中播放的声音

javascript - 我的 api 调用在 javascript 中不起作用,但在 postman 和浏览器中工作正常

AJAX post 使用 jQuery 更改数组参数的名称