我有一个主干应用程序,可以将一些数据从 API 加载到图表中。该应用程序有多个选项卡,可以通过导航来访问这些不同的图表,并且每个选项卡都执行一条路线。每个图表都是 ChartView 的一个实例,并放入适当的数据。
我遇到的问题是由某些可能需要一段时间的 API 调用引起的。当请求花费太长时间时,一些用户开始快速循环浏览选项卡,快速执行每个路由。这会启动所有的集合获取,最终会弄乱界面,因为某些回调会进行一些渲染。
所以我的问题是,如何确保每次加载新路由(即使是快速连续完成)时,所有待处理或已启动的请求都会停止,从而不会触发“请求成功”回调?
最佳答案
我建议重写 Backbone.Views 删除方法。通过常规 stopListening,中止 ajax 调用,还可以设置一个类似 this.removed=true
的标志。在渲染函数中检查是否已删除标志,如果存在则不渲染。如果点击速度非常快,您可能需要在调用任何电话之前检查一下。
关于javascript - 切换路由时清理请求和回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867323/