等待肯定响应(来自服务器)
Posted
技术标签:
【中文标题】等待肯定响应(来自服务器)【英文标题】:Waiting for a positive response (from a server) 【发布时间】:2018-07-11 10:31:57 【问题描述】:根据我在 how to wait for processes to complete 上一个问题中给出的好主意,我想问一些相关的问题。
这一次我没有两个进程一个接一个地执行,而是只有一个进程必须在 之后从服务器获得肯定响应。像这样的
private async Task<bool> requestPermission()
var result = await sendRequestToServer();
return result;
private async Task Process1()
bool amIOktoGo=false;
amIOktoGo= await requestPermission();
while(!amIOktoGo)
await Task.Delay(1000);
amIOktoGo= await requestPermission();
//Finally! Do some more stuff involving awaits and requests from the server
同样,这似乎过于复杂。有没有更简单的方法来做到这一点?
【问题讨论】:
@bommelding winforms 【参考方案1】:不要重新发明***。有一个库Polly 完全支持重试场景
这是您案例的异步示例。如果有异常或返回结果false
,它会异步重试您的操作。
await Policy
.Handle<Exception>()
.OrResult<bool>(b => !b)
.WaitAndRetry(new[]
TimeSpan.FromSeconds(1),
)
.RetryAsync()
.ExecuteAsync(() => requestPermission());
【讨论】:
发布的代码是否包含等待时间? (在我的情况下为 1 秒) @KansaiRobot 你可以自己检查图书馆。我发现他们也有等待时间。看看我的答案更新了以上是关于等待肯定响应(来自服务器)的主要内容,如果未能解决你的问题,请参考以下文章
ios - 如何使用 Alamofire 等待 api 响应