Angular:使用 HttpClient、Observable 和异步管道加载 http 数据时正在执行作业
Angular: Doing job when loading http data using HttpClient, Observable and async pipe
我在 angular 6 应用程序中使用 HttpClient 加载数据。成功加载数据后,我需要做一些额外的工作。如果我使用订阅功能,我可以很容易地在订阅中做到这一点:
http.get("/addressOfService").subscribe(data=>{
this.info =data;
DoJob();
});
但我知道加载数据并在视图中使用它的最佳做法是尽可能长时间地使用 async 管道,所以我正在使用它。
现在我的问题是,当加载数据并且用户正在使用异步管道时,运行 函数的最佳做法是什么。
我尝试了一些不同的解决方案,发现我可以使用地图功能,例如:
http.get("/addressOfService").pipe(map(data=>{
DoJob();
return data;
}));
但我不确定这是否是一个好的做法。
你应该使用 tap 而不是执行副作用,因为 map 应用一个函数来改变每个发射的元素,这不是你的情况
getData() {
this.isLoading = true;
http.get("/addressOfService").pipe(tap(_ => {
DoJob();
this.isLoading = false; // in case of success hide loading spinner
}));
}
我在 angular 6 应用程序中使用 HttpClient 加载数据。成功加载数据后,我需要做一些额外的工作。如果我使用订阅功能,我可以很容易地在订阅中做到这一点:
http.get("/addressOfService").subscribe(data=>{
this.info =data;
DoJob();
});
但我知道加载数据并在视图中使用它的最佳做法是尽可能长时间地使用 async 管道,所以我正在使用它。 现在我的问题是,当加载数据并且用户正在使用异步管道时,运行 函数的最佳做法是什么。 我尝试了一些不同的解决方案,发现我可以使用地图功能,例如:
http.get("/addressOfService").pipe(map(data=>{
DoJob();
return data;
}));
但我不确定这是否是一个好的做法。
你应该使用 tap 而不是执行副作用,因为 map 应用一个函数来改变每个发射的元素,这不是你的情况
getData() {
this.isLoading = true;
http.get("/addressOfService").pipe(tap(_ => {
DoJob();
this.isLoading = false; // in case of success hide loading spinner
}));
}