RX.JS 相当于 fromArray?
RX.JS equivalent of fromArray?
Rx.js 似乎有一个运算符 toArray
。什么从数组中获取某些东西并发出数组的元素?例如,如果我这样做,
ajax('localhost/foo')
还有那个 returns returns {foo: [1,2,3]}
。我如何将其映射到发出 1
、2
和 3
的东西?
我发现发现mergeMap()
有效,但我不知道是否有更好的方法,
ajax$.pipe(
mergeMap( x => x.response.events )
).subscribe( x => console.log("foo", x) );
您正在寻找 from
将 iterable 转换为 observable。
toArray
不是您要查找的内容:它缓冲可观察对象的所有值,并在可观察对象完成后发出它们。
参见:http://reactivex.io/documentation/operators/to.html
在你的情况下,你已经有一个可观察的,这是你的 ajax 调用。它是一个可观察的 itsel,即使它 returns 只有一个值然后立即完成。
如果您使用 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
Rx.js 似乎有一个运算符 toArray
。什么从数组中获取某些东西并发出数组的元素?例如,如果我这样做,
ajax('localhost/foo')
还有那个 returns returns {foo: [1,2,3]}
。我如何将其映射到发出 1
、2
和 3
的东西?
我发现发现mergeMap()
有效,但我不知道是否有更好的方法,
ajax$.pipe(
mergeMap( x => x.response.events )
).subscribe( x => console.log("foo", x) );
您正在寻找 from
将 iterable 转换为 observable。
toArray
不是您要查找的内容:它缓冲可观察对象的所有值,并在可观察对象完成后发出它们。
参见:http://reactivex.io/documentation/operators/to.html
在你的情况下,你已经有一个可观察的,这是你的 ajax 调用。它是一个可观察的 itsel,即使它 returns 只有一个值然后立即完成。
如果您使用 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