首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JQUERY \ AJAX中延迟

在JQUERY \ AJAX中延迟
EN

Stack Overflow用户
提问于 2017-04-13 17:04:02
回答 1查看 2.7K关注 0票数 0

我的要求是使用"SetUnit()“函数返回数据,但是这个函数包含异步AJAX服务,所以我使用的是这个(http://jsfiddle.net/b69ubLa0/21/)链接中建议的延迟。但这不符合我的要求。

密码.

函数

代码语言:javascript
复制
function SetUnit(query) {
            var $q = new $.Deferred();
            var oData = [];
            var filter = JSON.stringify({ 'param': query });
            $.ajax({
                type: "POST",
                url: '../WebService.asmx/ExecuteReader',
                contentType: "application/json; charset=utf-8",
                data: filter,
                dataType: "json",
            }).fail(function (jqXHR, textStatus, errorThrown) {
                $q.reject(jqXHR, textStatus, errorThrown);
            }).done(function (data, textStatus, jqXHR) {
                return $q.resolve(data);
            });
            return $q.promise();
        }

调用函数1

代码语言:javascript
复制
var oUNIT_NAME = SetUnit(query).done(function (data) { return data; });

调用函数2

代码语言:javascript
复制
 var oUNIT_NAME = SetUnit(query);

调用函数使用2种样式。

这个"oUNIT_NAME“var用于绑定许多下拉列表。

服务返回JSON对象

代码语言:javascript
复制
[{id:1,name:a},{id:1,name:a},{id:1,name:a},{id:1,name:a}]

注意:如果我在AJAX设置中添加(异步: false),这是可行的,但这不是一个好的实践,这阻止了我的UI.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-14 10:20:59

我希望这能帮到你。我不是关于延迟对象的专家,但我相信这能满足您的需要。

更新

工频

代码语言:javascript
复制
var oUNIT_NAME = {};
function SetUnit(query) {
    var $q = new $.Deferred()
    $q.promise(oUNIT_NAME);
    oUNIT_NAME.done(function(data) {
        //Bind your dropdowns
        alert(JSON.stringify(data));
    }).fail(function(jqXHR, textStatus, errorThrown) {
        //Alert user
        alert(errorThrown);
    });
    var oData = [];
    var filter = {
        json: JSON.stringify({
            data: query
        })
    };
    return $.ajax({
        cache: false,
        type: "POST",
        url: '/echo/json/',
        data: filter,
        dataType: "json"
    }).fail(function(jqXHR, textStatus, errorThrown) {
        $q.reject(jqXHR, textStatus, errorThrown);
    }).done(function(data, textStatus, jqXHR) {
        $q.resolve(data);
    });
}

SetUnit({
    param: 123
})
$("button").click(function() {
    SetUnit({
        param: 456
    })
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43397974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档