오프라인 모드를 구현하려고하는데 이와 같은 작업을 수행했습니다.
내 Page.ts
파일에서
getnews() {
this._newsservice.GetNews(this.NewsFilterOptions).subscribe(res => {
this.newsArray = res;
this.loadingnews = false;
},
err => {
this.loadingnews = false;
},
() => {
});
}
내 Service
파일에서
GetNews(FilterOptions: any) {
return this.utilitiesService.Get("news" + this.QueryBuilder(FilterOptions));
}
내 Utilities
파일
public Get(endUrl: string) :Observable<any> {
if (this._AppConfig.IsOnline) { // If Online Get From Server
...
return this.http.get(this.baseUrl + endUrl, options)
.map(response => {
//SAVE HTTP RESPONSE TO DICTIONARY
this._OfflineService.Set(this.baseUrl + endUrl, response);
return response.json()
});
}
else {
this._OfflineService.Get(this.baseUrl + endUrl).then(val => {
return Observable.of(val).map(o => o.json());
}).catch((err) => {
return Observable.throw("ERROR");
});
// FETCH HTTP RESPONSE FROM DICTIONARY
//return Observable.of(Data).map(o => o);
}
}
오프라인 Service
: Ionic을 사용하고 LocalStorage
있습니다.
Get(endUrl: string) {
// Or to get a key/value pair
return this.storage.get(endUrl);
}
Set(endUrl: string , data: any) {
// Or to get a key/value pair
this.storage.set(endUrl,data).then((val) => {
});
}
이제 온라인 모드가 정상적으로 작동하지만 앱이 오프라인 상태가되면 subscribe
observable을 반환하지만 undefined 속성 을 읽을 수 없습니다 .
귀하의 Get()
기능, else 섹션에서 :
return Observable.fromPromise(this._OfflineService.Get(this.baseUrl + endUrl))
.map(val => val.json())
.catch((err) => {
return Observable.throw("ERROR");
});
이것은 promise를 observable로 변환하고 map
json을 구문 분석하고 결국 구독 하는 데 사용할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다