개체 A
은 개체 B
의 M
메서드를 호출하고 두 경우에 두 개의 콜백 (cbYes
및 cbNo
)을 전달합니다. B
방법 N
을 : 다른 클래스의 메서드를 변수 이름으로 호출하는 AS3 구문? (연결된 콜백)
B
C
(API) 인스턴스를 생성, 웹 서비스 비동기 호출을 수행한다. 이 콜백은 호출 할 두 콜백 중 어떤 것을 결정합니다.
cbYes
및 cbNo
은 Function
의 B 's 개인용 변수로 저장됩니다.
어떻게 콜백을 호출 할 수 있습니까? 그들은 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 호출이 사용되는 시스템에 적합한 패턴을 제공해주십시오. 당신이 나 내부 멤버 변수로 cbYes 및 cbNo를 저장하는 경우
@ 바리스 감사합니다! 이벤트 시스템을 살펴 보겠습니다. – Serge