【问题标题】:Angular: Doing job when loading http data using HttpClient, Observable and async pipeAngular:使用 HttpClient、Observable 和异步管道加载 http 数据时的工作
【发布时间】:2019-05-25 13:01:22
【问题描述】:

我在 Angular 6 应用程序中使用 HttpClient 来加载数据。成功加载数据后,我需要做一些额外的工作。如果我使用订阅功能,我可以轻松地在订阅中做到这一点:

http.get("/addressOfService").subscribe(data=>{
   this.info =data;
   DoJob();
});

但我知道加载数据并在视图中使用它的最佳做法是尽可能长时间地使用 async 管道,所以我正在使用它。 现在我的问题是在加载数据并且用户使用异步管道时运行函数的最佳实践是什么。 我尝试了一些不同的解决方案,发现我可以使用地图功能,例如:

http.get("/addressOfService").pipe(map(data=>{
   DoJob();
   return data;
}));

但我不确定这是否是一个好习惯。

【问题讨论】:

    标签: angular rxjs angular6 observable


    【解决方案1】:

    您应该使用 tap 来执行副作用,因为 ma​​p 应用一个函数来更改每个发出的元素,这不是你的情况

    getData() {
     this.isLoading = true;
     http.get("/addressOfService").pipe(tap(_ => {
        DoJob();
        this.isLoading = false; // in case of success hide loading spinner
     }));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-13
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 2019-07-15
      • 2017-11-30
      相关资源
      最近更新 更多