콜백과 함께 작동하는 네트워크 API를 사용하고 있습니다. 그러니까 기본적으로, 나는 방법의 무리 I는 다음과 같이이 제 3 자 라이브러리에서 사용할 필요가 통화를 할 :Observable 또는 async/await를 사용하여 비동기 콜백을 래핑하는 방법은 무엇입니까?
void SendNetworkRequest(string requestType, Action<Response> callback)
내가 코드를 약간 이상한 점점을 찾을 네트워크에 의존 내 모든 방법 때문에 이 제 3 자 API의 리소스도 콜백 자체를 구현해야합니다. 예를 들어, 내 주요 장면에서 나는 선수 정보를 얻을 할 수 있으며, 내 코드는 다음과 같이 보일 것입니다 :
void InitMainScene()
{
_networkHelper.SendNetworkRequest("GetPlayersInfo",OnPlayerInfoResponse);
}
void OnPlayerInfoResponse(Response response)
{
_playerInfo = response.Info;
}
나는 최근 RX에 입수했습니다 내 코드에서 abundently을 사용하고 있습니다. 나는 async/await에 관해 읽은 것을 읽었다. RX를 사용하여 꽤 많은 실험을 해본 결과 Observable.FromAsync()를 사용해 보았지만 작동하지 못했습니다 ..
여기서 무엇이 누락 되었습니까? RX 또는 async/await를 사용하여 콜백이 필요없는 코드를 더 깨끗하게 작성할 수 있습니까? 다음은 내가 찾는 psuedocode입니다 :
void InitMainScene()
{
_playerInfo = Overservable.DoMagicThing<Response>(() => {
_networkHelper.SendNetworkRequest("GetPlayersInfo",(r) =>{return r;}); });
}
너무 감사합니다! 이게 굉장합니다! 나는 오늘 이것으로 놀 것이다. 당신을위한 질문 - 내 의미에서 Overservable보다이 의미를 권장합니까?BTW - 아직 async/await를 사용하지 않았고 사실, 실험적 기능으로 .net 4.6 만 지원하는 Unity3d에서이 작업을 수행하고 있습니다. – user3010678
이벤트 스트림을 처리하는 경우 RX가 좋습니다. 귀하의 경우에는 SendNetworkRequest를 호출 한 다음 작업이 완료 될 때까지 기다려야합니다. 그래서 예, 비동기/대기는이 경우 Rx보다 쉽고 합리적입니다. 깨끗하고 쉽게 –