метод не работает на ngOnInit - PullRequest
       0

метод не работает на ngOnInit

0 голосов
/ 19 апреля 2020

У меня есть функция 'check', которую я хочу запустить, которая определяет, что отображать на странице. Я вызываю эту функцию в ngOnInit. Я не знаю, где еще я мог бы назвать это? Это не работает. Журналы не печатаются.

export class followersComponent implements OnInit {
  followers = [] 
  user
  following = [] 
  socket
  constructor(
    private tokenService: TokenService,
    private userService: UserService
  ) {
    this.socket = io(environment.server)
  }
  ngOnInit() {
    this.user = this.tokenService.GetPayload()
    this.GetUser()
    this.check(this.followers, this.following)
    this.socket.on('refreshPage', () => this.GetUser())
  }

  GetUser() {
    this.userService.getUserById(this.user._id).subscribe((res: any) => {
      if(res.followers.length) this.followers = res.followers
      if(res.following.length) this.following = res.following   
    })
  }
  unFollow(user) {
    this.userService.Unfollow(user).subscribe(() => this.socket.emit('refresh', {}), err => console.log(err))
}
Follow(user) {
  this.userService.follow(user).subscribe(() => this.socket.emit('refresh', {}), err => console.log(err))
}
  check(arr1, arr2) {
    arr1.forEach(el => {
      arr2.forEach(el2 => {
        if(el.follower._id === el2.userFollowed._id) {
          console.log(el)
        } else {
          console.log('no')
        }
      })
    })
  }
}

1 Ответ

0 голосов
/ 19 апреля 2020

Скорее всего, он не печатает журналы, потому что в этот момент вызов this.userService.getUserById() еще не завершен: этот метод асинхронный c, а когда вы вызываете this.GetUser(), а затем this.check(this.followers, this.following), второй метод не не ждите, пока первый будет завершен. Вы можете попытаться позвонить на check из getUserById обратного вызова:

this.userService.getUserById(this.user._id).subscribe((res: any) => {
  if(res.followers.length) this.followers = res.followers;
  if(res.following.length) this.following = res.following;
  this.check(this.followers, this.following); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...