0

我已经在 jQuery 中对此进行了编码。但是,回调没有按我想要的顺序调用(完成分支中的回调在 when 分支中的回调之前调用)。如果我将internalOrderRequest和定义rejectionReasonRequest为简单变量(instea od 函数),一切正常。有人可以建议吗?

                        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);
                                                        },
                                                    })
                                        });
4

1 回答 1

1

根据jQuery.when()文档, when() 期待延迟对象,但您在 internalOrderRequest() 和 rejectReasonRequest() 方法中不返回任何对象。来自jQuery.ajax()文档:

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

只需在您的方法中返回您的 ajax 请求,这应该可以工作。

于 2013-04-11T09:21:10.893 回答