Подписка работает асинхронно. Так что это нормально, что ваш console.log () печатает, undefined ', поскольку console.log () обрабатывается задолго до того, как подписка возвращает значение.
data.subscribe(result => {
this.data = result;
console.log('this.data: ', this.data);
// call methods that work with this.data from here
});
Вам нужно вызвать методы, этот процесс
this.data
, изнутри подписки. Это обычный способ в Угловом. Вы ждете значения внутри подписки и работаете с ней, как только она будет предоставлена.
Ну, не видя твой код, мне не о чем продолжать, но, возможно, ты неправильно устанавливаешь состояние. Еще нужно учесть, что this.setState({})
происходит не сразу, а на самом деле асинхронно. Итак, если вы попытаетесь получить доступ к состоянию до того, как оно будет установлено, вы получите старые данные. Вы можете предоставить функцию обратного вызова в качестве второго аргумента для запуска после установки состояния:
const callback = () => {
console.log(this.state.players);
}
this.setState({
players: newPlayers
}, callback);