我正在发出一个 Angular 2 HTTP get 请求,作为回报,
Observable<Message[]> 我想将这个 observable 转换为多次发射。因此,假设服务器返回长度为 3 的 Message 数组。我希望在我的订阅调用中获得 3 个通知(对于数组中的每个值),而不是通过数组获得一个调用。
例如:['Hello','Hey','Howdy'] -> 'Hello', 'Hey','Howdy'
我找到了一个可以转换数组的运算符 (Observable.for),但是这个运算符将数组而不是 Observable 作为参数。
您可以使用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
尝试这个:
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)
| 归档时间: |
|
| 查看次数: |
4721 次 |
| 最近记录: |