我有一个AngularJS应用程序,该应用程序有很多指令,这些指令是从AJAX请求中的嵌套节点填充的。例如,我可能会收到如下响应:
{
name: "Blog post title",
comment_ids: [1, 2, 3]
}
当前,在我的控制器中,我将请求为每个子节点注释加载数据,并将其填充到合并范围中。就像是:
_.each(comment_ids, function(id) {
scope.comment_data[id] = $http.get(id); // psuedocode for the $get
});
然后,我使用页面上的数据,例如:
<comment data="comment_data.1"></comment>
这很好用,但我正在考虑将指令转换为以id代替对象,并自行处理数据加载。我面临的问题是,如果同一指令多次出现在页面上,则可能会向同一个端点发出多个请求,例如
<comment id="1"></comment>
<comment id="1"></comment>
<comment id="1"></comment>
这将导致对注释端点的三个调用。鉴于这种:
如果浏览器在短时间内发生对同一HTTP终结点的多次调用,浏览器是否会将其分批处理到一个请求中?还是我应该编写一个拦截器自行处理?
现在可以使用以下方法很好地解决此问题:https : //github.com/facebook/dataloader
DataLoader是一个通用实用程序,可用作应用程序数据获取层的一部分,以在各种后端上提供一致的API,并通过批处理和缓存减少对这些后端的请求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句