angular - 来自可观察的到可观察的[]
问题描述
我正在尝试从外部 API 获取数据包;通过一个 httprequest 我得到一个Observable<T[]>
.
在等待请求完成时,我计划创建一个“占位符”,将来会得到那些 T,所以我想为每个占位符分配一个Observable<T>
.
如果我在 a 中分配 T
request.pipe(map(array => foreach(item of array) {createPlaceholder(item)})
占位符将在获取数据后创建,使“占位符”概念毫无意义;所以我考虑将 转换Observable<T[]>
为 aObservable<T>[]
并将每个 observable 分配给一个新数组,但是在网上搜索我只能找到相反的(Observable<T>[]
to Observable<T[]>
)。
有没有办法将 a 转换Observable<T[]>
为 a Observable<T>[]
?
解决方案
您不能对通用数组长度执行此操作。
T[] 的长度在程序开始时是未知的,它甚至可能会起泡。所以你不能为此使用数组。
只有当您知道数组的长度(您可以在打字稿中将其建模为元组类型)时,您才能像这样创建可观察对象:
const serverResponse$: Observable<[T, T, T]> = ...;
const myObservables$: [Observable<T>, Observable<T>, Observable<T>] = [
serverResponse$.pipe(map(r => r[0])),
serverResponse$.pipe(map(r => r[1])),
serverResponse$.pipe(map(r => r[2]))
];
推荐阅读
- scala - Akka Stream 源队列:如何限制在具有背压的队列中的插入(来自可遍历的接口)
- javascript - 处理 Snowflake 中调用多个存储过程的异常
- reactjs - 如何使用 reactjs 启用滚动条?
- google-apps-script - 我们如何使用应用程序脚本控制台将多个键和值添加到谷歌驱动器文件?
- python - python:以不同的方式将相同的值分配给列表时得到不同的结果
- latex - 删除乳胶中的随机分页符
- r - 计算一个data.frame中某些行的总和
- java - JavaFX 视图:add 和 setConstraints 之间有区别吗?
- swift - 在 watchos 扩展上使用 cocoapod 时签名错误
- wordpress - 想在 wordpress 的第一级使用菜单代码制作自定义下拉菜单,但不知道从哪里开始?