Как вернуть данные из модуля подписки функция угловая 7 - PullRequest
0 голосов
/ 14 мая 2019

Я новичок в angular 7, и существует проблема с возвратом данных из функции компонента. Возможно, это не тот способ, чтобы задать вопрос, потому что у меня меньше понимания в отношении угловых 7.

Вот моя компонентная функция

getUserStatus

getUserStatus(){
  this.chatService.newUserJoined().subscribe(data=>{
    this.statuses = data;
  });
  return this.statues;
}

chatService получает данные из сервиса, и теперь я просто хочу вернуть статус из этой функции, либо статус может быть истинным, либо ложным. Мне нужно вернуть данные из этой функции, которую я пытался, но она дает мне неопределенный. Спасибо всем

1 Ответ

2 голосов
/ 14 мая 2019

Вы не можете вернуть данные напрямую с subscribe

Почему?

Поскольку ваша функция использует Observable, а Observable является асинхронным, то есть данные не будут немедленно доступны, и ваша функция не будет ждать данных и завершит их выполнение и вернет null и это не должен быть способ обработки Observable, потому что вы смешиваете свой синхронный вызов функции с асинхронным кодом.

Правильный способ сделать это - вернуть Observable из этой функции и затем вызвать subscribe для нее. Вы можете сделать это так:

getUserStatus() {
  return this.chatService.newUserJoined()
}

И в функции вызова вы можете сделать это следующим образом

getUserStatus().subscribe(data=>{
    // work with data returned
  });

Больше информации о наблюдаемых здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...