Показать сообщение отдельно
  #7 (permalink)  
Старый 26.06.2018, 18:17
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

this.messages = wsService.connect();

здесь в messages запишется Subject. Когда я пишу messages.next('Блаблабла'), то вызывается метод next вот такой
const observer = {
    next: (data: Object) => { // next отправляет данные на сервер
      console.log('Отправка данных на сервер...');
      this.socket.emit('message', JSON.stringify(data));
    },
  };

который и отправляет данные на сервер.
А вот эта конструкция
const observable = new Observable(observer => {
    this.socket.on('message', (data) => {
      console.log("Данные пришли с сервера");
      observer.next(data); // Я вызываю next, но данные отправляются не на сервер, а подписчику
    })
  });

срабатывает когда у меня где-то в коде есть messages.subscribe().
То есть в Subject можно как писать новые значения, так и подписываться на него. В первом случае вызывается метод next объекта Observer (первый аргумент в методе Subject.create), во втором - определенная мной Observable (второй аргумент в методе Subject.create).
Ответить с цитированием