我正在制作一个Angular 2 HTTP get请求,作为回报,我得到了
Observable<Message[]>
我想将这个observable转换为多个emit。
所以假设服务器返回长度为3的Message数组。
我希望在我的订阅调用中获得3个通知(对于数组中的每个值),而不是使用数组进行一次调用。
例如: ['你好','嘿','你好'] - &gt; '你好','嘿','你好'
我找到了一个运算符,它确实转换了数组(Observable.for),,但是这个运算符将一个数组作为参数,而不是一个Observable。
答案 0 :(得分:4)
您可以使用concatAll
运算符展平数组(mergeAll
也可以使用)。
Observable.of(['Hello','Hey','Howdy'])
.concatAll()
.subscribe(console.log)
答案 1 :(得分:1)
试试这个:
Observable.from(yourRequest())
.flatMap(msgList => Observable.from(msgList))
.subscribe(msg => console.log(msg));
在这种情况下, yourRequest()
应返回数组。
如果yourRequest()
返回Observable
,则:
yourRequest().flatMap(msgList => Observable.from(msgList))
.subscribe()
答案 2 :(得分:0)