현재 일부 Android 앱 개발을하고 있습니다. 나는 이벤트 중심 프로그래밍에 익숙하지 않다. 그래서 이것은 아마도 초보자 질문 일 것입니다. 다음 로직을 상상해보십시오 :N 비동기 서비스 호출 응답을 클라이언트 응답 1 개로 통합
class A {
function1() {
call function2(new Callback())
}
class Callback implements OnFunction2Done {
@Override
onFunction2Done() {
}
}
}
class B {
function2(Callback callback) {
foreach item 1 - n {
// call external service which responds via async callback
}
}
}
기본적으로 function1은 다른 클래스에서 function2를 호출합니다. 호출의 일부로 function2가 모든 작업을 완료하면 호출되는 콜백 루틴 핸들도 제공합니다. 문제는 function2 자체가 N 비동기 서비스 호출을하고 있다는 것입니다. for 루프 (function2 내)의 모든 비동기 서비스 호출이 완전히 완료된 후에 만 콜백 루틴 (onFunction2Done())이 호출되도록하는 가장 좋은 방법은 무엇입니까? 추천 솔루션 인 onFunction2Done()이 function2에서 "n"응답을 통합하는 작업 (루프를 통해 매번 하나씩)을 수행하는 것도 좋습니다.
감사합니다.
class B {
int counter;
function2(Callback callback) {
counter = n;
foreach item 1 - n {
//send stuff to external service, service responds in onResponseOrError
}
}
onResponseOrError() {
--counter;
if (counter == 0)
callback.onFunction2Done();
}
}
당신이 외부 서비스에 foreach 루프를 이동할 수 있습니다 –