等待肯定响应(来自服务器)

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 响应

Swift:如何对服务进行 API 调用但不等待响应

Camel-netty4:如何在发送下一个请求之前等待响应

Spring Boot 使用来自服务器响应的数据编辑 json 异常

C# WebApi 等待 WebHook 响应

C#异步套接字服务器没有收到来自Java客户端的响应