在Ajax Web应用程序中,当从浏览器到服务器的Web服务调用失败时,您会怎么做?
我知道没有正确或错误的答案,只是想知道人们认为什么是最佳做法。
答案 0 :(得分:2)
正如你所说,没有正确或错误的答案,必须根据具体情况做出选择:
没有正确的答案,但我认为能够拦截网络服务失败然后自动化这个坏习惯的用户(我们)可能会感到遗憾:重试,重试,重试......
答案 1 :(得分:1)
静默重试一次或两次,然后失败并向用户发出警告。
为避免重复,请在每个请求中包含唯一ID,并在服务器上丢弃具有相同ID的请求。
答案 2 :(得分:0)
最近我一直在家里使用Google Docs。有时,我的连接会停止一段时间然后最终返回。我想知道应用程序何时保存有问题(这是在不同的时间间隔),但我并不总是担心它的确如此,我不希望模型中断(只是某处的消息)。如果真的很糟糕(无法保存很长时间),我只需将整个缓冲区复制到记事本中并将其保存为备份。
这是一个很好的例子,因为我的'交易'基本上是本地的,直到我需要保存它。上下文在我的电脑上一段时间,然后是服务器,然后是我的电脑。如果应用程序在每次无法工作时挂起,我将无法将其用于任何非平凡的事情。
如果应用只是一个访问服务器的屏幕,那么它的本地部分是微不足道的。它应该让用户了解“交易”的当前状态(成功或失败)。
所以这真的取决于当地的环境有多少以及远程有多少......
保罗。
答案 3 :(得分:0)
这取决于您的使用案例。你能从中恢复失败吗?失败的预期频率是多少? “重试”操作的努力程度可能超过其益处。使用您对应用程序的了解来确定实现复杂的错误处理是否值得...通常不是。
答案 4 :(得分:0)
我也会谨慎使用自动重试。如果他们愿意,我会留给消费者进行重试。我建议的一件事是使用HTTP错误代码来表示发生了什么样的错误(例如415 - 不支持的媒体类型等)。这样消费者就知道如何回复错误信息。