Javascript承诺,缓存&角
javascript promises, caching & angular
我有一个angular服务,负责从服务器加载项目,然后当一个项目在视图中被选中时,相应的项目将从项目列表中取出并返回到detail
我现在遇到的问题是,当重新加载页面时,我的项目尚未加载,因此我的解析失败,导致重新加载失败。
getItems = (): ng.IPromise<Array<any>> => {
if (this.items != undefined) {
return this.items;
}
return this.$http.get(url).then((result) => {
this.items = result.data['items'];
return this.items;
});
}
getItem= (id: any): ng.IPromise<any> => {
return this.getItems().then(() => angular.forEach(this.items, (item: any) => {
if (item.id === id) {
return item;
}
}));
}
我原以为这段代码(getItem)会返回单个项,但它再次返回整个集合。我怎么能修复我的代码,让我返回单个项目?
如果你可以使用es6-shim:
getItem= (id: any): ng.IPromise<any> => {
return this.getItems().then(() => this.items.find( (item: any) => {
return item.id === id;
}));
}
也可以用
getItem= (id: any): ng.IPromise<any> => {
return this.getItems().then(() => this.items.filter( (item: any) => {
return item.id === id;
})[0]);
}
相关文章:
- 我的职位回报太快了,如何做出承诺
- 打破承诺链的好方法是什么
- 从函数返回角度承诺
- 如何在从浏览缓存加载页面时执行javascript
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 缓存谷歌地图数据
- 我怎样才能获得承诺的价值
- 延期承诺值未更新/解析/延期
- 在承诺链中处理早期回报的最佳方式
- 防止jQuery Mobile中的ajax缓存
- 承诺在非节点式回调上使用Bluebird
- image.onload事件和浏览器缓存
- 简单的ES6承诺问题-交换解决和拒绝参数
- 组合承诺和非承诺值
- 带有对象/原型的链式承诺(Q延期)
- 如何在不缓存外部的情况下将“this”传递到承诺中
- Javascript中的缓存和预取过期承诺
- AngularJS回调,复制$http的行为.将缓存转化为承诺
- AngularJS承诺正在缓存
- Javascript承诺,缓存&角