this.http.get < ApprovalRoute[] > (`${this.baseUrl}/Routes`).subscribe(ar => {
localStorage.setItem("allRoutes", JSON.stringify(ar));
return Observable.from(ar);
});
Вышесказанное не возвращает наблюдаемого. Вы не можете вернуть значение в подписчике вызывающей функции.
return Observable.from(JSON.parse(localStorage.getItem("allRoutes")));
Выше используется from()
, который преобразует массив значений в индивидуально выданные значения. Это не соответствует типу возврата Observable<ApprovalRoute[]>
, который генерирует массив.
На основании того, что я вижу в вашем примере. Я думаю, может быть, это то, что вы пытались.
getApprovalRoutes(): Observable<ApprovalRoute[]> {
return of(localStorage.getItem('allRoutes'))
.pipe(
switchMap(routes => {
if (!routes) {
return this.http.get<ApprovalRoute[]>(`${this.baseUrl}/Routes`)
.pipe(tap(ar => localStorage.setItem('allRoutes', JSON.stringify(ar))));
}
return of(JSON.parse(routes));
})
);
}
Вы хотите передать значения из localStorage, а если значение пустое, переключиться на HTTP-запрос. Откройте результаты HTTP и поместите их в хранилище.