javascript - 切换路由时清理请求和回调

标签 javascript backbone.js backbone-events backbone-routing

我有一个主干应用程序,可以将一些数据从 API 加载到图表中。该应用程序有多个选项卡,可以通过导航来访问这些不同的图表,并且每个选项卡都执行一条路线。每个图表都是 ChartView 的一个实例,并放入适当的数据。

我遇到的问题是由某些可能需要一段时间的 API 调用引起的。当请求花费太长时间时,一些用户开始快速循环浏览选项卡,快速执行每个路由。这会启动所有的集合获取,最终会弄乱界面,因为某些回调会进行一些渲染。

所以我的问题是,如何确保每次加载新路由(即使是快速连续完成)时,所有待处理或已启动的请求都会停止,从而不会触发“请求成功”回调?

最佳答案

我建议重写 Backbone.Views 删除方法。通过常规 stopListening,中止 ajax 调用,还可以设置一个类似 this.removed=true 的标志。在渲染函数中检查是否已删除标志,如果存在则不渲染。如果点击速度非常快,您可能需要在调用任何电话之前检查一下。

关于javascript - 切换路由时清理请求和回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867323/

相关文章:

javascript - 有人可以解释这段代码是如何工作的吗?

javascript - Backbone.js:始终检测模型何时设置了属性,而不是/只是/已更改

javascript - 如何验证 keyup 上的 float

javascript - 如何将一行作为参数传递给 javascript?

backbone.js - 主干 View 事件未触发差异

javascript - Marionette 中布局内的布局

backbone.js - Backbone.View 和 Backbone.Model 实例过多

javascript - 模型更改后 backbone.js 事件不受约束?

javascript - 将对象转换为 JSON 对象

javascript - Jasmine 不能监视事件处理程序?