【发布时间】:2016-07-26 19:12:26
【问题描述】:
我有一个使用其他服务连接到 websocket 的 APIService。 websocket 服务返回一个Subject<MessageEvent> 类型的套接字。然后在我的 APIService 中,我想根据有效负载将此主题吐出到不同的主题中。我的 APIService 如下所示:
export class APIService {
public sonos: Subject<sonosData>;
public commits: Subject<commitData>;
constructor(wsService: WebsocketService) {
this.sonos = <Subject<sonosData>>wsService
.connect(WEBSOCKET_URL)
.map((response: MessageEvent) => {
let data = JSON.parse(response.data);
if(data.sonos) {
return data.sonos;
}
});
}
}
我可以使用其他运算符而不是 map 吗?如果我为此编写一些 sudo 代码,它将如下所示:
export class APIService {
public sonos: Subject<sonosData>;
public commits: Subject<commitData>;
constructor(wsService: WebsocketService) {
wsService
.connect(WEBSOCKET_URL)
.forEach((response: MessageEvent) => {
let data = JSON.parse(response.data);
if(data.sonos) {
this.sonos = data.sonos;
}
if(data.commits) {
this.commits = data.commits;
}
});
}
}
但是公共变量不会被定义并导致错误,因为我使用它们的组件无法订阅它们。
【问题讨论】:
标签: angular rxjs observer-pattern