我正在为 jQuery AJAX 方法创建一个包装器,因为我的 AJAX 请求在实际继续之前依赖于异步工作。
我目前正在做的是: http: //pastie.org/private/bfdvep4kcdclzupsyddmiq
var ajax = function (options) {
var deferred = $.Deferred();
doAsyncWork()
.done(function (attributes) {
$.ajax(options)
.done(function () {
deferred.resolve.apply(this, arguments);
})
.fail(function () {
deferred.reject.apply(this, arguments);
});
})
.fail(function () {
deferred.reject();
});
return deferred.promise();
};
ajax().readyState // undefined
它有一个返回承诺的外部延迟。在实际执行 AJAX 请求之前,我触发 doAsyncWork() 并等待它完成。现在,虽然这可行,但问题是当其他脚本使用包装器时,因为它们无法访问 jQuery XHR 对象的属性。
有没有办法优雅地解决这个问题?