dojo/request
を使用してサーバーにさまざまな要求を送信するDojoクラスがあります。Dojo要求で作業しない前のDojoアスペクト
dojo/aspect
を使用して、を追加する必要があります。その前に、アドバイスを送信してください。
docsは比較的わかりやすいようです。私の問題は、前にアドバイスが実行されることはありませんということです
'myPackage/MyClass':function(){
define("myPackage/MyClass", [
"dojo/request",
// etc. etc.
"dojo/aspect"
], function(request, ..., aspect) {
return declare("myPackage.MyClass", null, {
constructor: function(options){
aspect.before(dojo, "request",
function(url, args){
// TODO
alert("before advice applied");
}
);
},
// various functions that use dojo request
});
}
);
}
:
私のクラス宣言は次のようになります。
私はそのようなthis
を標的とする代わりにdojo
、又は検査するとき、xhr
を直接request
を標的とし、そののみ表示機能など、いくつかの変異体を、試してみました。
私は絶望的なドキュメントページに戻り、方法"xhr"
でdojo
をターゲティングしようとしましたが、うまく内部的に呼び出すことはできませんでしたが、今まで働いたことはありません。
私は見落としたことがありますか?
編集
前にアドバイスをthis
と使用頻度の高い機能をターゲットに実行されたように、私は自分のコードを変更してみました。
のような何か:この文の時間複雑性を仮定し、私は面倒な回避策を使用してrequest
を呼び出す機能ごとにbefore
アドバイスを追加することができることを意味箱、外にうまく権利を働いたaspect.before(this, "theFrequentlyUsedFunction",
これらの関数の中のrequest
呼び出しは簡単です。
Dojo request
が呼び出される前にアドバイスを適用するときに正しいターゲットと関数名を参照していないということですが、なぜこれが機能しないのかはまだ分かりません。
おかげで、それは非常に簡単だし、(明らかなの一種)で、動作します警告:あなたは、this.request' 'にrequest''へのコールをリファクタリングする必要がありますアドバイスを適用するための注文。 – Mena
喜んで助けてください。残念ながら、 'request'が定義のファクトリ関数の範囲でのみ引数として存在するまでは、現時点で他の方法では動作しません。 –