1
對象A
調用方法M
的對象B
,傳遞給它兩個回調兩種情況:cbYes
和cbNo
。AS3語法通過變量名稱調用另一個類的方法? (連鎖回調)
B
,反過來,執行Web服務的異步調用,唯一的回調創建對象C
(API)實例:的B
方法N
。此回調將決定要調用哪個回調。
我店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調用者的工人! :-)必須有更多的睡眠。
AfterQuestion:這種架構方法看起來確實錯了嗎?請建議一個更好的模式,或適合使用併發異步API調用的系統的模式。
謝謝@巴黎!我會看看事件系統。 – Serge