gpt4 book ai didi

angular - 在 Angular 中链接可观察对象的最佳方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 17:57:08 25 4
gpt4 key购买 nike

如果我有一个服务调用依赖于另一个服务调用的结果,那么链接它们的最佳方式是什么?

myService.getStuffFromServer().subscribe(data => {
let manipulatedData = functionThatManipulatesData(data);
myService.getMoreStuffFromServer(manipulatedData).subscribe(moreData => {
doStuffWithMoreData(moreData);
});
});

这是我一直在做的方式,但有时嵌套会有点乱。有更清洁的方法吗?

最佳答案

如评论中所述,它非常简单。

myService.getStuffFromServer().
.map(functionThatManipulatesData)
.flatMap(myService.getMoreStuffFromServer)
.subscribe(doStuffWithMoreData);

map transforms each element of a stream from one type of data to another. But if that transformation involves an asynchronous call we use flatMap.

我能描述的最简单的方法,这种想法对我帮助很大。

我们还可以使用 flatMap 向流中添加多个项目。例如, map 获取一项并将其替换为新项。如果我们想取一个项目并在其位置添加 3 个项目怎么办。例如,我也想用它的正方形和立方体替换一个数字。

----1---2---3--- 

----1---1---1---2---4---8---3---9---27----

然后我们就可以使用flatMap

stream.flatMap(num => Observable.of(num, num*num, num*num*num));

现在 flatMap 将每个元素替换为三个新元素。这是 flatmap 的两个重要功能。希望我把你弄糊涂了:)

关于angular - 在 Angular 中链接可观察对象的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44968265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com