RXJS Observable 将数组转换为多个值

Mas*_*ets 6 rxjs angular

我正在发出一个 Angular 2 HTTP get 请求,作为回报, Observable<Message[]> 我想将这个 observable 转换为多次发射。因此,假设服务器返回长度为 3 的 Message 数组。我希望在我的订阅调用中获得 3 个通知(对于数组中的每个值),而不是通过数组获得一个调用。

例如:['Hello','Hey','Howdy'] -> 'Hello', 'Hey','Howdy'

我找到了一个可以转换数组的运算符 (Observable.for),但是这个运算符将数组而不是 Observable 作为参数。

mar*_*tin 7

您可以使用concatAll运算符来展平数组(mergeAll也可以使用)。

Observable.of(['Hello','Hey','Howdy'])
  .concatAll()
  .subscribe(console.log)
Run Code Online (Sandbox Code Playgroud)

看演示:https : //jsbin.com/gaxajex/3/edit?js,console


Sas*_*saT 3

尝试这个:

Observable.from(yourRequest())
    .flatMap(msgList => Observable.from(msgList))
    .subscribe(msg => console.log(msg));
Run Code Online (Sandbox Code Playgroud)

yourRequest()在这种情况下应该返回数组。

如果yourRequest()返回Observable则:

yourRequest().flatMap(msgList => Observable.from(msgList))
    .subscribe()
Run Code Online (Sandbox Code Playgroud)