ObjectA
调用M
object 的方法,B
为两种情况传递两个回调:cbYes
和cbNo
.
B
反过来,执行 Web 服务异步调用,C
使用唯一的回调方法创建 Object (api) 实例N
:B
. 此回调将决定调用两个回调中的哪一个。
我存储cbYes
并cbNo
用作 B 类型的私有变量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 caller worker 解决了这个问题!:-) 要多睡觉。
AfterQuestion:这种架构方法看起来真的是错误的吗?请建议一种更好的模式,或者一种适合使用并发异步 API 调用的系统的模式。