Rx.js似乎有一个运算符toArray
。是什么从数组中取出东西并发出数组的元素?例如,如果我这样做,
ajax('localhost/foo')
,返回{foo: [1,2,3]}
。如何将其映射到发出1
,2
和3
的对象上?
答案 0 :(得分:2)
您正在寻找from
,它将可迭代对象转换为可观测对象。
toArray
不是您要查找的内容:它缓冲可观察对象的所有值,并在可观察对象完成后发出它们。
参见:http://reactivex.io/documentation/operators/to.html
在您的情况下,您已经有一个可观察的对象,即您的ajax调用。即使它只返回一个值然后立即完成,这也是一个可观察的结果。
如果将您的可观察值(响应)产生的值映射到使用from
的另一个可观察值,则您将获得一个可观察值的可观察值(称为高阶可观察值)。
参见:https://netbasal.com/understanding-mergemap-and-switchmap-in-rxjs-13cf9c57c885
要简单地观察数字,您还需要使用组合运算符(merge
,switch
,concat
)。任何一个都可以做。
ajax$.pipe(
concatMap(x => from(x.response.events)),
).subscribe(x => console.log("foo", x)) // 1, then 2, then 3
答案 1 :(得分:1)
我发现发现ajax$.pipe(
mergeMap( x => x.response.events )
).subscribe( x => console.log("foo", x) );
可行,但是我不知道是否有更好的方法,
{{1}}