【问题标题】:Observable with an http.get inside可通过 http.get 观察
【发布时间】:2018-11-16 14:32:42
【问题描述】:

我从角度开始。

我正在尝试创建一个 Observable 来加载和放入缓存数据。 我想从我的应用程序的 HomeComponent 订阅这个 observable,当 observable ping 它时,因为它完成了,我会出现按钮

但是,我有一个问题 我有一个 http.get 从函数中获取数据:charger_data() 然后如果我成功得到数据,我将它转换并放入缓存中

我想要我的主要功能:charger_data_et_cache() 返回一个 observable

我做不到,请你帮帮我!!! ?

谢谢

  public charger_data_et_cache(force:boolean) : Observable<boolean>{

    this.charger_data().subscribe(
      (value) => {
        console.log('Observable change ! => ' + value);
        charger_cache(value);
      },
      (error)=> {
        console.log('Observable error!');
      },
      () => {
        console.log('Observable complete!');
      }
    )
    
    
    return Observable.create( observer => {
        
    
    });

  
 }
 
 
 
 public charger_data():Observable<string>{
      return this.http.get('/assets/txt/mystere.txt',{responseType: 'text'}).pipe(
        map(data =>  {
          return data;
        }),catchError( error => {
          return throwError( 'error : ' + error )
        })
        );
  }
  
  
  public charger_cache(data:string){
  
    //do stuff
  }

【问题讨论】:

  • 什么时候返回 observable ?
  • 你使用的是什么角度版本?
  • 我正在使用 Angular 7
  • 是的,我想返回一个 observable
  • 我可以从 homeComponent 订阅 observable

标签: javascript angular observable


【解决方案1】:

我找到了!

public charger_data_et_cache(force:boolean) : Observable<boolean>{

    if(force == false && MystereService.mystere_charge){
      return Observable.create((observer) => observer.complete());
    }
    return this.charger_data(force).pipe(map(data => {
        this.charger_cache(data);
        console.log('charger_cache ok');
        return true;
    }),catchError( error => {
        return throwError( 'error' )
      }));

  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2021-06-10
    • 2012-06-20
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多