네트워크 처리 결과에 따른 콜백 함수 구현
콜백(callback) 함수란 특정 이벤트가 발생하기까지 처리 되지 않다가 이벤트가 발생하면 즉시 호출되어 처리하는 함수
기존의 자바 코드
// 성공과 실패 콜백 함수를 위한 인터페이스 선언
public interface Callback {
void onSuccess (ResultType result);
void onError (Exception exception);
}
// networkCall의 선언
public void networkCall (Callback callback) {
try {
// 성공 시 onSuccess 콜백 함수 호출
callback.onSuccess(myResult);
} catch ( e: Throwable) {
// 실패 시 onError 콜백 함수 호출
callback.onError(e);
}
}
// networkCall의 사용 - 인자에서 인터페이스 구현을 익명 객체를 만들어 처리
networkCall ( new Callback() {
public void onSuccess ( ResultType result ) {
// 네트워크 호출에 성공했을 때의 구현부
}
public void onError ( Exception e ) {
// 네트워크 호출에 실패했을 때의 구현부
}
} )
코틀린 코드
// 코틀린으로 만들어진 네트워크 호출 구현부
// 1. 람다식 함수의 매개변수를 가진 networkCall() 함수 선언
fun networkCall ( onSuccess : (ResultType) -> Unit, onError : (Throwable) -> Unit ) {
try {
onSuccess (myResult)
} catch ( e : Throwable ) {
onError ( e )
}
}
// 2. networkCall () 함수의 사용 - 인자 형식에 람다식을 사용
networkCall ( result -> {
// 네트워크 호출에 성공했을 때 구현부
}, error -> {
// 네트워크 호출에 실패했을 때 구현부
});
'# 02 > 코틀린' 카테고리의 다른 글
[Kotlin] 코틀린의 다양한 함수들 2 (0) | 2019.07.07 |
---|---|
[Kotlin] 코틀린의 다양한 함수들 1 (0) | 2019.07.05 |
[Kotlin] 동기화를 위한 코드 구현 람다식 활용 (0) | 2019.07.05 |
[Kotlin] 다른 함수의 참조에 의한 호출 (0) | 2019.07.04 |
[Kotlin] 고차 함수와 람다식 (0) | 2019.07.04 |