我已经用jQuery编写了这个代码。然而,回调并不是按照我想要的顺序调用的( done分支中的回调在when分支中的回调之前被调用)。如果我将internalOrderRequest和rejectionReasonRequest定义为简单的变量(而不是函数),那么一切都很好。有人能给点建议吗?
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);
},
})
});发布于 2013-04-11 17:21:11
根据jQuery.when()文档,当()需要延迟对象,但在internalOrderRequest()和rejectionReasonRequest()方法中没有返回任何对象时。来自jQuery.ajax()文档:
从jQuery 1.5开始,由$.ajax()返回的jqXHR对象实现Promise接口,为它们提供Promise的所有属性、方法和行为(有关详细信息,请参阅延迟对象)。
只需在你的方法中返回你的ajax请求,这应该会起作用。
https://stackoverflow.com/questions/15943483
复制相似问题