我有一个同步API来调用当前使用XMLHttpRequest实现的服务器(HTTP GET)。
API执行缓存,如果缓存不被认为太旧,将从缓存返回并调用服务器异步刷新缓存。
有时缓存不可用或太旧,然后API将同步调用服务器以获取准确的值,然后将结果返回给调用者。
Result将包含一个布尔成功标志以及有效负载,客户端通过查看此标志来相应地处理结果。
我可以看到这样做有两个问题; 当缓存不可用且服务器无法访问或应答缓慢时,我想调出一个微调器,以便用户知道我们正在等待服务器。 另外,我想设置一个超时值,我们中止服务器请求并相应地处理错误。
似乎我应该可以使用setTimout操作,但我没有成功。 我希望保持客户端完整(不要将API更改为异步)。
有没有办法实现这个目标?
答案 0 :(得分:0)
通过维护从服务器异步中提取的缓存,使同步API响应。 缓存受到宽限期的保护,在宽限期内我们不会从服务器中提取新值以避免锤击服务器。
对于大多数情况,这足以断言总有一个缓存值可以提供给客户端。
对于我们必须提取新数据的一些情况,最好的解决方案是完全异步,也就是更新客户端代码。
目前这不是一个选项,因此除此之外,还设置了一个心跳机制,可以切换在线/离线状态,以防止在离线时尝试同步拉动。