我想使用 Promises 在 AngularJS 中实现静态资源的动态加载。问题:我在页面上有几个组件可能(或不,取决于显示的内容,因此是动态的)需要从服务器获取静态资源。加载后,它可以在整个应用程序生命周期中缓存。
我已经实现了这个机制,但我是 Angular 和 Promises 的新手,我想确定这是否是一个正确的解决方案\方法。
var data = null;
var deferredLoadData = null;
function loadDataPromise() {
if (deferredLoadData !== null)
return deferredLoadData.promise;
deferredLoadData = $q.defer();
$http.get("data.json").then(function (res) {
data = res.data;
return deferredLoadData.resolve();
}, function (res) {
return deferredLoadData.reject();
});
return deferredLoadData.promise;
}
因此,只发出一个请求,所有对 loadDataPromise() 的下一次调用都会返回第一个做出的Promise。它似乎适用于正在进行的请求或前一段时间已经完成的请求。
但它是缓存 Promise 的好方法吗?