RX.JS 相当于 fromArray?

RX.JS equivalent of fromArray?

Rx.js 似乎有一个运算符 toArray。什么从数组中获取某些东西并发出数组的元素?例如,如果我这样做,

ajax('localhost/foo')

还有那个 returns returns {foo: [1,2,3]}。我如何将其映射到发出 123 的东西?

我发现发现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

要获得简单的数字可观察性,您还需要使用组合运算符(mergeswitchconcat)。任何一个都可以完成工作。

ajax$.pipe(
  concatMap(x => from(x.response.events)),
).subscribe(x => console.log("foo", x)) // 1, then 2, then 3