MessageEvent 的访问字段
Posted
技术标签:
【中文标题】MessageEvent 的访问字段【英文标题】:Access fields of a MessageEvent 【发布时间】:2018-06-01 13:16:02 【问题描述】:我有一个 Angular 6 前端应用程序,它通过 Websocket 与我的后端通信。
当我发送登录请求时,我的后端返回一个 JSON 对象
"type":"LoggedIn","value":"email":"1@1.de","id":9,"name":"1"
我现在尝试读取那里的字段,但我没有看到允许我这样做的方法。
到目前为止,我可以使用该功能显示整个后端消息:
this.socketService.receiveEvents('LoggedIn').subscribe((message: MessageEvent) =>
console.log('message: ' + message.data);
);
receiveEvents(完整性原则):
/**
* TODO: Implement a paramemter that allows this method to return an Observable
* TODO: with a filter for relevant events for the calling functions
* @returns Observable<Object>
*/
receiveEvents(relevantEvent): Observable<Object>
return this._subject.asObservable().pipe(filter((event: Event) => event != null));
我如何仅显示字段“类型”或“值”?
我已经尝试使用 for 循环对其进行迭代,但我只收到单个字母。
非常感谢。
【问题讨论】:
控制台日志的输出是什么? "type":"LoggedIn","value":"email":"1@1.de","id":9,"name":"1" 所以如果你这样做了:(<any>message.data).type
会发生什么
【参考方案1】:
这样做:
interface BackendResponse
type: string;
value: string[];
this.socketService.receiveEvents('LoggedIn').subscribe((message: MessageEvent) =>
const obj: BackendResponse = JSON.parse(message.data);
console.log(obj.type);
);
这应该会让你走上正确的道路 =)
【讨论】:
以上是关于MessageEvent 的访问字段的主要内容,如果未能解决你的问题,请参考以下文章
Subject<MessageEvent> 类型上不存在专有“地图”