angular - 在 subscribe、rxjs、angular 中调用 subscribe
问题描述
我知道在订阅中调用订阅的其他帖子很少,但我找不到解决方案。
我在 subscribe 中调用 subscribe ,我知道它不能正常工作。console.log 以随机顺序打印head。例如,S1 有 H1,S2 有 H2,S3 有 H3。当前程序有时会打印 S1、S3、S2,有时会打印 S2、S3、S1。
期望是按顺序打印国家元首。我怎样才能实现它?
GetStates(countryID).subscribe(
data => {
let states = JSON.parse(data);
states.forEach(
entry => {
GetHeadOfState(entry.ID).subscribe(
head => {
console.log(head)
}
)
}
)
})
解决方案
有多种方法可以做到这一点,但如果您想要的状态实际上是一个数组,您可以首先解包数组(使用concatAll
/ mergeAll
),然后调用concatMap
每个状态。操作员将为每个concatMap
项目运行并等待它完成:
GetStates(countryID).pipe(
map(data => JSON.parse(data)),
concatAll(),
concatMap(state => GetHeadOfState(state.ID)),
).subscribe(headOfState => ...);
推荐阅读
- python - 将 json 对象转换为 pyspark 数据框
- amazon-web-services - 使用 Elemental MediaPackage 在 aws 上继续观看存储视频的功能
- ruby - 如何在 ruby 中抓取输入框的值?
- android - KOTLIN 中 mvvm 结构中的折线图
- powershell - 使用数组作为哈希表中的键
- linux - 使用 Freetype 和 Mingw 的未定义引用
- javascript - 我得到了 = removeChild 不是函数
- scala - 如何将 Spark RDD 转换为 Spark DataFrame
- java - 使用 java.util.Random 制作自定义类,不断返回 NullPointerException
- javascript - 为什么提取的 html 文件的脚本不执行?