使用javascript同步http接口

时间:2014-05-04 17:21:40

标签: javascript asynchronous xmlhttprequest

我有一个同步API来调用当前使用XMLHttpRequest实现的服务器(HTTP GET)。

API执行缓存,如果缓存不被认为太旧,将从缓存返回并调用服务器异步刷新缓存。

有时缓存不可用或太旧,然后API将同步调用服务器以获取准确的值,然后将结果返回给调用者。

Result将包含一个布尔成功标志以及有效负载,客户端通过查看此标志来相应地处理结果。

我可以看到这样做有两个问题; 当缓存不可用且服务器无法访问或应答缓慢时,我想调出一个微调器,以便用户知道我们正在等待服务器。 另外,我想设置一个超时值,我们中止服务器请求并相应地处理错误。

似乎我应该可以使用setTimout操作,但我没有成功。 我希望保持客户端完整(不要将API更改为异步)。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

通过维护从服务器异步中提取的缓存,使同步API响应。 缓存受到宽限期的保护,在宽限期内我们不会从服务器中提取新值以避免锤击服务器。

对于大多数情况,这足以断言总有一个缓存值可以提供给客户端。

对于我们必须提取新数据的一些情况,最好的解决方案是完全异步,也就是更新客户端代码。

目前这不是一个选项,因此除此之外,还设置了一个心跳机制,可以切换在线/离线状态,以防止在离线时尝试同步拉动。