首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在$.when完成后序列化jQuery请求

问如何在$.when完成后序列化jQuery请求
EN

Stack Overflow用户
提问于 2013-04-11 15:57:00
回答 1查看 207关注 0票数 0

我已经用jQuery编写了这个代码。然而,回调并不是按照我想要的顺序调用的( done分支中的回调在when分支中的回调之前被调用)。如果我将internalOrderRequest和rejectionReasonRequest定义为简单的变量(而不是函数),那么一切都很好。有人能给点建议吗?

代码语言:javascript
复制
                        var self = this;
                    debugger;
                    var internalOrderRequest = function() {
                        $
                                .ajax({
                                    type : "GET",
                                    url : internalOrderServiceURL,
                                    contentType : "application/json; charset=utf-8",
                                    dataType : "json",
                                    success : self.retrieveInternalOrderSuccess,
                                    error : self.retrieveInternalOrderError
                                })
                    };

                    var rejectionReasonRequest = function() {


                        $
                                .ajax({
                                    type : "GET",
                                    url : rejectionReasonServiceURL,
                                    contentType : "application/json; charset=utf-8",
                                    dataType : "json",
                                    success : self.retrieveRejectionReasonSuccess,
                                    error : self.retrieveRejectionReasonError
                                })
                    }



                        $
                                .when(internalOrderRequest(),
                                        rejectionReasonRequest())
                                .done(
                                        function(result1, result2) {
                                            $
                                                    .ajax({
                                                        type : "GET",
                                                        url : salesOrderInfoServiceURL,
                                                        contentType : "application/json; charset=utf-8",
                                                        dataType : "json",
                                                        success : function(
                                                                oResult) {
                                                            self
                                                                    .retrieveServiceItemSuccess(oResult);
                                                        },
                                                        error : function(
                                                                oResult) {
                                                            self
                                                                    .retrieveServiceItemError(oResult);
                                                        },
                                                    })
                                        });
EN

回答 1

Stack Overflow用户

发布于 2013-04-11 17:21:11

根据jQuery.when()文档,当()需要延迟对象,但在internalOrderRequest()和rejectionReasonRequest()方法中没有返回任何对象时。来自jQuery.ajax()文档:

从jQuery 1.5开始,由$.ajax()返回的jqXHR对象实现Promise接口,为它们提供Promise的所有属性、方法和行为(有关详细信息,请参阅延迟对象)。

只需在你的方法中返回你的ajax请求,这应该会起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15943483

复制
相关文章

相似问题

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