我想知道是否可以使用Dojo取消对Web服务的调用。我的问题是,例如,用户在地图中有许多元素要选择,并且每当他点击其中一个时,就会调用对web服务的调用以带来大量数据。此操作需要几秒钟的延迟。想象一下,用户几乎同时点击了五个元素:将会有一个选定的元素(最后一次点击),但信息面板将定期刷新,点击之前元素的信息,直到加载最后一个元素信息。
我想要的是取消之前的所有通话(如果可能),只允许完成最后一次通话。我正在使用Dojo。我见过文档,但我没有看到任何有用的东西。像“ajax.abort()”这样的方法就是我期望找到的。
我还想过创建一个类来管理调用并在每次调用同一个url时添加到队列中,以便只允许最后一次调用来呈现数据,但是通过这种方式,我仍然要等待完成每次服务电话然后丢弃结果。我认为正确的方法是取消旧电话。
有什么建议吗?感谢。
答案 0 :(得分:0)
在某些论坛和网页上搜索后,我发现了这个:www.mike-griffith.com - Cancel dojo XHR in progress。这正是我所寻找的(尽管在Web示例中用于“GET”服务,“cancel()”方法也适用于“POST”调用)。
因此,我将服务调用管理器与此代码组合以取消具有相同网址的调用。我还必须管理如何在取消呼叫时避免(如果我能够)引发的错误,但这是其他任务而不是优先级。