RxJS 5 WebSocket的阵列信息
问题描述:
我通过这一格式的WebSocket连接接收消息:RxJS 5 WebSocket的阵列信息
[
{
//msg 1
},
{
//msg 2
},
....
]
基于一些例子我在这里发现在网络上是我的代码:
public messages: Subject<Message> = new Subject<Message>();
//...
this.messages = <Subject<Message>>this.wsService
.connect(COMMUNICATION_URL)
.map((response: MessageEvent): Message => {
let data = JSON.parse(response.data);
//data is an array [ {..} , {..}, ...]
return data;
});
this.messages.subscribe(msg => {
console.log(msg);
// msg is an array of objects [ {..} , {..}, ...]
// I want to be just the object
});
我想要实现的是拆分对象中的消息(数组),当我订阅我想接收这些对象而不是对象数组。
答
最容易的就是使用concatAll()
或mergeAll()
,当它与RxJS 5中的数组一起使用时,会重新发送它的所有项目。
this.messages = <Subject<Message>>this.wsService
.connect(COMMUNICATION_URL)
.map((response: MessageEvent): Message => {
let data = JSON.parse(response.data);
//data is an array [ {..} , {..}, ...]
return data;
})
.concatAll();
我没有测试,但我想你也可以使用更短的变体:
this.messages = <Subject<Message>>this.wsService
.connect(COMMUNICATION_URL)
.concatMap((response: MessageEvent): Message => {
let data = JSON.parse(response.data);
//data is an array [ {..} , {..}, ...]
return data;
})
查看类似的答案:
我测试过的concatMap例子,就像一个魅力。谢谢 –