オブジェクトはオブジェクトのA
メソッドM
を呼び出しB
、2つの場合に2つのコールバックを渡します:cbYes
とcbNo
。
B
次に、Webサービスの非同期呼び出しを実行C
し、唯一のコールバック:メソッドN
でオブジェクト(api)インスタンスを作成しますB
。このコールバックは、2つのコールバックのどちらを呼び出すかを決定します。
私はタイプのBのプライベート変数として保存cbYes
して機能します。cbNo
Function
どちらのコールバックを呼び出すことができますか?それらはBの子ではないので、構文B[cbYes]();
は方法ではありません。非現実的なコード例:
class A {
public function Smth() {
var instB:B = new B( cbYes, cbNo);
}
public function cbYes( e:Event) { doSomething(); }
public function cbNo( e:Event) { doSomething(); }
}
class B {
private var _cb1:Function;
private var _cb2:Function;
public function B( cb1, cb2) {
_cb1 = cb1; _cb2 = cb2;
var worker:C = new C();
C.apiMethod123( cbAfterCall);
}
public function cbAfterCall( Result:*) {
if( Result = 1) {
// here I need to call callback from _cb1
} else {
// here I need to call callback from _cb2
}
}
}
class C {
private var _Callback:Function;
public function C() { }
public function apiMethod123( cb:Function) {
this._Callback = cb;
// create a URLLoader or a Loader and do a web service call
}
public function urlCallback( e:Event) {
// parse response
this._Callback();
}
}
わかりました。このサンプルコードをまとめているときに、API呼び出し元のワーカーですでにこれを解決していることに気付きました。:-)もっと睡眠をとるようになりました。
AfterQuestion:このアーキテクチャのアプローチは本当に間違っているように見えますか?より良いもの、または同時非同期API呼び出しが使用されるシステムに適したパターンをアドバイスしてください。