0

我想知道是否可以使用 Dojo 取消对 Web 服务的调用。我的问题是,例如,用户在地图中有许多元素要选择,并且每次他单击其中一个元素时,都会执行对 Web 服务的调用以带来大量数据。此操作需要几秒钟的延迟。想象一下,用户几乎同时点击了五个元素:将有一个选定的元素(最后一次点击),但信息面板将定期刷新之前点击过的元素的信息,直到最后一个元素信息被加载。

我想要的是取消所有以前的电话(如果可能的话),只允许完成最后一个电话。我正在与 Dojo 合作。我看过文档,但没有看到任何有用的东西。我希望找到类似“ajax.abort()”方法的东西。

我还考虑创建一个类来管理调用并将每次调用同一个 url 添加到队列中,以便只让最后一次调用呈现数据,但通过这种方式,我仍然会等待完成每个服务调用然后丢弃结果。我认为正确的做法是取消旧电话。

有什么建议吗?谢谢。

4

1 回答 1

0

在一些论坛和页面搜索后,我找到了这个:www.mike-griffith.com - Cancel dojo XHR in progress。这正是我正在寻找的(尽管在 web 示例中用于“GET”服务,“cancel()”方法也适用于“POST”调用)。

因此,我将服务调用管理器与此代码相结合,以取消具有相同 url 的调用。我还必须管理如何避免(如果我能够)取消呼叫时引发的错误,但这是其他任务,优先级要低得多。

于 2013-01-04T12:02:17.997 回答