【发布时间】:2017-10-17 01:54:06
【问题描述】:
我正在使用与回调一起使用的网络 API。所以基本上,我有一堆方法调用需要在这个 3rd 方库中使用,它们看起来像这样:
void SendNetworkRequest(string requestType, Action<Response> callback)
我发现代码有点古怪,因为我的所有方法都依赖于来自这个 3rd 方 API 的网络资源,也需要自己实现回调。例如,在我的主要场景中,我可能想要获取玩家信息,我的代码如下所示:
void InitMainScene()
{
_networkHelper.SendNetworkRequest("GetPlayersInfo",OnPlayerInfoResponse);
}
void OnPlayerInfoResponse(Response response)
{
_playerInfo = response.Info;
}
我最近接触了 RX,并在我的代码中大量使用它。我已经阅读了一些关于 async/await 的内容。我已经做了很多实验,尤其是使用 RX,并尝试使用 Observable.FromAsync() 但无法让它工作..
我在这里缺少什么?如何编写更简洁且不需要使用 RX 或 async/await 回调的代码?以下是我正在寻找的伪代码:
void InitMainScene()
{
_playerInfo = Overservable.DoMagicThing<Response>( () => {
_networkHelper.SendNetworkRequest("GetPlayersInfo",(r) =>{return r;}); });
}
【问题讨论】:
标签: c# asynchronous async-await system.reactive reactive-programming