我有一个Web客户端和一个Go服务器。客户端发送一些json数据,然后处理,然后服务器返回一个json响应。
但是当我想告诉客户一个非常慢的过程的结果,甚至允许客户端停止这个过程时,我该怎么办?
我一直在想也许我可以每隔5-10秒继续发送新的请求以进行更新,但这看起来效率不高,并且它不允许我停止使用{{1}开始的流程}
答案 0 :(得分:0)
您可以为慢功能创建一些“警卫”。它们限制执行时间,在此期间它们返回结果的函数成功,如果不是 - 返回默认值并取消函数。
代码示例:
select {
case result := <-successChan:
return result, nil
case <-timeoutChan:
return "", nil
}