私の AJAX 要求は、実際に処理を進める前に非同期処理に依存しているため、jQuery 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
promise を返す外部 deferred があります。doAsyncWork() を起動し、実際に AJAX リクエストを実行する前に完了するのを待ちます。さて、これは機能しますが、問題は、他のスクリプトが jQuery XHR オブジェクトのプロパティにアクセスできないためにラッパーを使用する場合です。
これをエレガントに解決する方法はありますか?