Javascript RxJS-转换“;“对象”;事件到一个";数组";包含所有对象

Javascript RxJS-转换“;“对象”;事件到一个";数组";包含所有对象,javascript,arrays,websocket,rxjs,Javascript,Arrays,Websocket,Rxjs,上下文: webSocketRequest.onopen = () => { webSocketRequest.send(JSON.stringify(firstMessage)); webSocketRequest.onmessage = (streamEvent) => { return of(streamEvent).pipe( map(event => JSON.parse(event.data)), f

上下文:

  webSocketRequest.onopen = () => {
    webSocketRequest.send(JSON.stringify(firstMessage));
    webSocketRequest.onmessage = (streamEvent) => {

      return of(streamEvent).pipe(
        map(event => JSON.parse(event.data)),
        filter(message => message.type === 'RECORD'), // Here I filter only for the Object I want
        tap(rec => console.log(rec.data.value)) // This returns my desired individual objects
      ).subscribe();
    };
  };

我有一个Websocket端点。WS流式传输一组
消息
。每个
消息
都有一组我想要访问的数据,以便提供可视化

问题:

  webSocketRequest.onopen = () => {
    webSocketRequest.send(JSON.stringify(firstMessage));
    webSocketRequest.onmessage = (streamEvent) => {

      return of(streamEvent).pipe(
        map(event => JSON.parse(event.data)),
        filter(message => message.type === 'RECORD'), // Here I filter only for the Object I want
        tap(rec => console.log(rec.data.value)) // This returns my desired individual objects
      ).subscribe();
    };
  };

可视化只接受
数组
。而WS端点只有对象。我想将单个对象转换为一个对象数组

代码:

  webSocketRequest.onopen = () => {
    webSocketRequest.send(JSON.stringify(firstMessage));
    webSocketRequest.onmessage = (streamEvent) => {

      return of(streamEvent).pipe(
        map(event => JSON.parse(event.data)),
        filter(message => message.type === 'RECORD'), // Here I filter only for the Object I want
        tap(rec => console.log(rec.data.value)) // This returns my desired individual objects
      ).subscribe();
    };
  };


从那时起,我面临着一堵墙。谁能帮帮我吗?实际上,我想将所有对象转换为一个包含所有对象的数组。谢谢

如果我理解正确,您希望维护一个消息列表,并将通过WebSocket发送的所有新消息附加到此列表中

  • Staightforward方法:在使用者中创建数组,并在.subscribe()回调中修改它:
  • 更奇特一点-您可以直接在管道中执行此操作,每次追加新消息时,生成的可观察对象将发出一个更改的数组:

  • 这允许您将此可观察数据传递给不同的最终消费者,他们将能够在阵列发生变化时使用阵列,而无需重复逻辑

    非常感谢。我会用非花哨的方式做一些肮脏的工作,然后再绕回来做得更好。非常感谢!!