如何 return 作为 localStorage 的观察者或 Angular2 中的其他观察者?
How to return as observer from localStorage or an other observer in Angular2?
这是我的 "loantype" 服务 get() 函数:
get() {
return new Observable(observer => {
let response;
if ( localStorage.getItem('loantypes_are_valid') === '1' ) {
response = JSON.parse(localStorage.getItem('loantypes') || '[]');
} else {
response = this.getAll().subscribe(result => {
localStorage.setItem('loantypes', JSON.stringify(result) );
localStorage.setItem('loantypes_are_valid', '1');
});
}
return response;
});
}
我只想像这样使用此服务:
this.loanTypes.get().subscribe(
response => this.loantypes = response,
(error: AppError) => {throw error; }
);
现在,目标是在有效的情况下从 localStorage 提供数据,否则我需要从 API 服务器重新加载它,将其存储到 localStorage(用于下一个请求)并提供数据进入组件。
此代码将数据存储到localStorage 中,在此之后发生了一些错误,我无法找出问题所在。有什么想法吗?
尝试在订阅
下添加一个return语句
localStorage.setItem('loantypes', JSON.stringify(result) );
localStorage.setItem('loantypes_are_valid', '1');
return result
调用观察者的 next()
if () {
observer.next(JSON.parse(...))
}
else {
response = this.getAll().subscribe(result => {
localStorage.setItem('loantypes', JSON.stringify(result) );
localStorage.setItem('loantypes_are_valid', '1');
observer.next(result)
});
}
observer.complete()
这是我的 "loantype" 服务 get() 函数:
get() {
return new Observable(observer => {
let response;
if ( localStorage.getItem('loantypes_are_valid') === '1' ) {
response = JSON.parse(localStorage.getItem('loantypes') || '[]');
} else {
response = this.getAll().subscribe(result => {
localStorage.setItem('loantypes', JSON.stringify(result) );
localStorage.setItem('loantypes_are_valid', '1');
});
}
return response;
});
}
我只想像这样使用此服务:
this.loanTypes.get().subscribe(
response => this.loantypes = response,
(error: AppError) => {throw error; }
);
现在,目标是在有效的情况下从 localStorage 提供数据,否则我需要从 API 服务器重新加载它,将其存储到 localStorage(用于下一个请求)并提供数据进入组件。
此代码将数据存储到localStorage 中,在此之后发生了一些错误,我无法找出问题所在。有什么想法吗?
尝试在订阅
localStorage.setItem('loantypes', JSON.stringify(result) );
localStorage.setItem('loantypes_are_valid', '1');
return result
调用观察者的 next()
if () {
observer.next(JSON.parse(...))
}
else {
response = this.getAll().subscribe(result => {
localStorage.setItem('loantypes', JSON.stringify(result) );
localStorage.setItem('loantypes_are_valid', '1');
observer.next(result)
});
}
observer.complete()