현재 작업하는 내용에서 좀 막히는 부분이 있어서 글을 올립니다.
fun findPathDataReturnDocument(startPoint : LocationPoint, endPoint : LocationPoint) : Document{
var document : Document = null
val mapData = mapData()
mapData.findPathDataAllType(startPoint, endPoint, object : mapData.FindPathDataAllListenerCallback{
override fun onFIndPathDataAll(p0 : Document?){
document = p0
}
})
return document!!
}
음... 일단 이렇게 적긴 했는데요. 시작 위치와 도착 위치를 매개변수로 넣게 되면
경로를 Document 형식으로 반환해 주는 함수 입니다.
해당 findPathDataAllType은 네트워크를 통해서 시작 위치와 도착 위치를 받아서 서버에서 경로를 반환해 줍니다.
그런데 문제는 해당 함수 안에 있는 mapData.findPathDataAllType 때문입니다. 해당 함수 안에 콜백 매개변수가 있는데
콜백 매개변수를 통해서 서버에서 경로를 받게 되는데요. 이렇게 되면 서버에서 아무래도 좀 늦게 응답을 하다보니 먼저
리턴이 실행되어서 document를 반환 받지 못 합니다.
이 부분 때문에 코루틴도 공부하고 했는데 이 부분에 어떻게 적용해야 할지를 모르겠네요.
물론 콜백 부분 안에다가 원하는 작업을 넣어도 되지만 그건 최후의 보류로 하고 현재는 경로(Document)를 반환
받고 싶습니다. 비동기로 이루어지는 Callback 작업을 순차적으로 작업이 이루어지게 할 수는 없을까요?