多个主题和订阅或只有一个 - Angular 5

时间:2018-01-11 14:49:02

标签: javascript node.js angular angular5

现在我正在为我的应用程序编写前端代码。现在我有一个名为socketio的服务,它接收我的应用程序需要显示的数据。此外,此服务使用Subjects通过子目录将数据传递给组件。

最好只有一个主题/订阅,它表示邮件内容是什么,或者有多个主题/订阅,每个任务一个?

我对内存使用和处理时间的最佳方法感兴趣。

以下是我的服务:

import { Injectable} from '@angular/core';
import { Subject } from 'rxjs/Subject';
import * as io from 'socket.io-client';

@Injectable()
export class SocketioService {
  namespace = '/test';
  socket: any;

  positionsUpdate: Subject<object> = new Subject<object>();  // One subject
  pingsUpdate: Subject<object> = new Subject<object>();  // Another subject

  constructor() {
    this.socket = io(location.protocol + '//' + 'localhost' + ':5000' +  this.namespace);

    const self = this;

    this.socket.on('advisor_ping', function(msg) {
      self.pingsUpdate.next(msg);
    });

    this.socket.on('advisor_position', function(msg) {
      self.positionsUpdate.next(msg);
    });
  }

}

现在,如果我采用多主题方法,我最终会有9个。

谢谢!

1 个答案:

答案 0 :(得分:1)

您总是希望尽可能少订阅,否则很容易忘记取消订阅等。您还可以通过异步管道将单个observable绑定到模板,它将显示所有值。

所以你的代码示例看起来很不错

另请参阅Ben Lesh(rxjs经理)的这篇文章:https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87