不要在服务层通过Observable将值返回给组件。
创始人
2025-01-11 02:00:08
0

最好在服务层的方法中直接返回值而不是 Observable,因为 Observable 通常用于异步数据流。如果非常需要使用 Observable,则应该在服务层内部订阅这个 Observable,执行完操作后再将结果以回调函数的形式传递回组件。

具体的示例代码如下:

不好的写法:

// 在服务层中使用 Observable 返回值
@Injectable({ providedIn: 'root' })
export class UserService {
  private user$: Observable;

  constructor(private http: HttpClient) {}

  getUser(id: string): Observable {
    if (this.user$) {
      return this.user$;
    } else {
      const url = `http://api.example.com/user/${id}`;
      this.user$ = this.http.get(url).pipe(shareReplay(1));
      return this.user$;
    }
  }
}

// 在组件中使用服务层返回的 Observable
@Component({ ... })
export class UserComponent implements OnInit {
  user$: Observable;

  constructor(private userService: UserService) {}

  ngOnInit() {
    this.user$ = this.userService.getUser('123');
  }
}

好的写法:

// 在服务层中直接返回值,不使用 Observable
@Injectable({ providedIn: 'root' })
export class UserService {
  constructor(private http: HttpClient) {}

  getUser(id: string): Observable {
    const url = `http://api.example.com/user/${id}`;
    return this.http.get(url);
  }
}

// 在组件中使用订阅的方式获取服务层的返回值
@Component({ ... })
export class UserComponent implements OnInit {
  user: User;

  constructor(private userService: UserService) {}

  ngOnInit() {
    this.userService.getUser('123').subscribe(user => {
      this.user = user;
    });
  }
}

相关内容

热门资讯

透视免费!wpk俱乐部辅助器,... 透视免费!wpk俱乐部辅助器,wpk插件辅助,科技教程(有挂揭秘)1、每一步都需要思考,不同水平的挑...
透视游戏!wpk真吗,wpk透... 透视游戏!wpk真吗,wpk透视怎么安装,科技教程(有挂规律)1、金币登录送、破产送、升级送、活动送...
透视美元局!wpk有辅助器吗,... 透视美元局!wpk有辅助器吗,wpk德州局透视,规律教程(有挂黑科技)运wpk德州局透视辅助工具,进...
透视好友房!wpk俱乐部是真的... 透视好友房!wpk俱乐部是真的吗,wpk安卓下载辅助,解说技巧(有挂黑科技)1、让任何用户在无需wp...
透视最新!如何下载wpk透视版... 透视最新!如何下载wpk透视版,wpk私人辅助,详细教程(有挂脚本)如何下载wpk透视版软件透明挂微...
透视私人局!wpk有那种辅助吗... 透视私人局!wpk有那种辅助吗,wpk俱乐部有没有辅助,专业教程(有挂教程)1、wpk俱乐部有没有辅...
透视了解!wpk模拟器是什么,... 透视了解!wpk模拟器是什么,wpk模拟器是什么,爆料教程(有挂细节);1、进入游戏-大厅左侧-新手...
辅助透视!wpk插件,wpk透... 辅助透视!wpk插件,wpk透视辅助靠谱吗,攻略教程(有挂细节);所有人都在同一条线上,像星星一样排...
透视科技!wpk控制牌是真的吗... 透视科技!wpk控制牌是真的吗,wpk透视辅助,规律教程(有挂技巧);1、超多福利:超高返利,海量正...
透视辅助!wpk作弊是真的吗,... 透视辅助!wpk作弊是真的吗,wpk私人局有透视吗,安装教程(有挂插件);1、wpk私人局有透视吗透...