网站搜索

javascript - 如何创建 Angular 服务以从本地存储获取数据(如果可用),否则调用 API 方法


我正在尝试创建一个 Angular 服务,以便在一次方法调用中在实际 API 调用和本地存储之间切换。

组件.ts

this.userService.getAllUsers().subscribe(data => {
      console.log('users', data); //getUser
});

用户服务.ts

export class UsersService {

constructor(...){ }

getAllUsers() {
    return this.storageMap.get('users').pipe(
      switchMap(data => {
        if (data) return data;
        else return this.userStore.collection('users').valueChanges();
      })
    );
 }

saveUsers(data){
return this.storageMap.set('users', data);
}

}

本地存储库:@ngx-pwa/local-storage

问题:

  1. 我不知道如果“data”在 storageMap 中可用,如何将其作为 Observable 从“getAllUsers”方法返回。

  2. 如果数据未定义,如何在“getAlluser”中调用“saveUsers”方法将数据保存到本地存储。

提前谢谢!

答案#1

您可以使用 RxJS 的 of 操作符将 LocalStorage 中的数据转换为可观察对象。

import { of } from 'rxjs';
.
.
const observableData = of(data);