заполнение нового экземпляра класса в функции подписки

#javascript #angular #class #subscribe

Вопрос:

Этот код работает как есть, за исключением краткого мигания неправильных данных из-за того, что я создаю пустой токен, прежде чем сразу же заполнять его в функции подписки. Есть ли способ переместить мой экземпляр в функцию подписки или передать классу все необходимые параметры для его создания вместо этого?

 {
  this.tokens.push(new Token(this.i));
  this.tokenService.generate().subscribe((data: Token) => this.tokens[this.i] = {
    // user_id: this.tokens[this.i].user_id,
    copied: false, id: this.i  ,
    access_token: data.access_token,
    expiration: data.expiration
  });
}
 

Комментарии:

1. Может быть, я не понимаю вашего вопроса, но не могли бы вы просто «не делать этого»? Просто удалите свою первую строку кода: this.tokens.push(новый токен(this.i));

Ответ №1:

 this.tokenService.generate(this.i).subscribe((data: Token) => {
    this.tokens.push(data);
});

// tokenService 
public generate(i: number): Observable <Token> {
    const token = new Token(i);
    return this.httpClient.post<Token>().pipe(map(res => {
        token.access_token = res.access_token
        ...
        return token;
})
// look at constructor of Token, it's better to put some logic there
// the code is not working, just an example