我仍在使用backbonejs,因为发现引导新的基于微API的网站非常容易和快速。
问题是关于收集组点击时的集合加载和渲染的最佳实践。
假设我有静态品牌列表。点击品牌后我开始获取该集合,并在获取结束时成功获取该集合。
当用户点击没有处理过上一次点击的品牌时会出现问题,所以会发生两个品牌,两个品牌都已加载并呈现。解决这个问题的最佳方法是什么?取消"取消"或者只是忽略第一次获取而只渲染用户点击的最后一次?
我发现解决方案只是在处理请求之前停用品牌列表,但它明智地解决了UX问题,因为用户可能希望立即点击另一个不等待结果的人(例如,如果他错过了点击)< / p>
答案 0 :(得分:0)
从xhr
返回的基础Backbone.fetch
对象可以取消当前请求xhr.abort()
。
当用户点击并收集集合时,请保存返回值。
var xhr = myCollection.fetch()
xhr
具有告诉您当前请求状态的属性。
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState
如果用户再次点击并导致在另一个请求仍在处理时提取集合,只需询问xhr
是否在请求中间。如果是,则中止并继续当前获取,并重新分配xhr
对象。
示例代码:
function userClickedSomething(){
if(xhr.readyState > 0 && xhr.readyState < 4)
xhr.abort()
xhr = myCollection.fetch()
}
如何存储对xhr
对象的引用取决于您。