使用angular的时候,subscribe监听不到observable的对象是为什么?恳求大神指点!

我先上代码,问题的话我写在了对应的代码上边

  heroes: Hero[];
  getHero(id: number): Observable<Hero> {
    /**其实就是这段代码出现了问题,我调用的inMemoryDataService的个体DATa方法之后,获取到的是一个Observable数据流,但是为什么后边进行订阅之后我在console.log中输出的this.heroes是undefined呢*/
     this.inMemoryDataService.getData().subscribe(heroes=>this.heroes=heroes);
     console.log(this.heroes);
     return of(this.heroes.find(hero => hero.id === id));
  }

这是inMemoryDataService中的getData方法

getData():Observable<Hero[]>{
        let api ='http://localhost:8888/net/user/getUserList';
        return this.http.get<Hero[]>(api) .pipe(
            catchError(this.handleError<Hero[]>('getHeroes', []))
           );
    }

查过了好多资料,总感觉这个地方是因为线程出的问题,可是也不知道应该怎么解决,各位好汉,救救孩子吧!

解决了

 getHero(id: number): Observable<Hero> {
     this.messageService.add(`测试数据2`);
     /**
      * 首先我们在这里是可以获取到this.inMemoryDataService.getData()返回的Observable对象的
      * 但是却获取不到其中的heroes
      * 认为可能有两种情况导致
      * 1.同一个Observable对象好像不能被订阅两次,但是这里应该是第一次被订阅
      * 2.线程不一致导致没有获取到这里的信息,可是在后续的操作中又获取到信息了
      */

     return this.inMemoryDataService.getData().pipe(map(heroes=> heroes.find(hero => hero.id === id)));

将方法中的代码改成这个样子就可以了