我正在使用与回调一起工作的网络API。所以基本上,我有一大堆的方法调用,我需要这个第三方库,像这样使用:如何使用Observable或async/await包装异步回调?
void SendNetworkRequest(string requestType, Action<Response> callback)
我找到的代码变得有点古怪,因为我所有的方法依赖于网络来自第三方API的资源也需要自行实现回调。举例来说,在我的主场景我可能想要得到的球员资料和我的代码看起来是这样的:
void InitMainScene()
{
_networkHelper.SendNetworkRequest("GetPlayersInfo",OnPlayerInfoResponse);
}
void OnPlayerInfoResponse(Response response)
{
_playerInfo = response.Info;
}
我最近卷入了RX和我的代码abundently使用它我。我读过一些关于异步/等待的内容。我已经尝试了很多,尤其是使用RX,并尝试使用Observable.FromAsync(),但无法让它工作。
我在这里错过了什么?我如何编写更清晰的代码,并且不需要使用RX或异步/等待的回调?以下是我正在寻找的psuedocode:
void InitMainScene()
{
_playerInfo = Overservable.DoMagicThing<Response>(() => {
_networkHelper.SendNetworkRequest("GetPlayersInfo",(r) =>{return r;}); });
}
太谢谢你了!这很棒!今天我会玩这个。你的问题 - 你在我的情况下推荐这种语义over Overservable吗?顺便说一句 - 我还没有使用异步/等待,事实上,我在Unity3d这样做只支持.net 4.6作为实验性功能。 – user3010678
如果您正在处理一系列事件,RX非常棒。在你的情况下,你调用SendNetworkRequest,然后等待任务完成,就是这样。所以是的,在这种情况下,异步/等待比Rx更容易和更合理。清洁和简单 –