SaveLolliPoP
@SaveLolliPoP
1 / 0 = ∞

Как добиться асинхронности?

Есть функция:

getSome() {
   this.http.get('/some')
      .subscribe( (data: Array<object>)=> {
        console.log(data)
        this.AllMaterial = data; // не делает запрос
      }, err => {
        console.log(err)
      })
}

Я должен вызвать ее после проверки в другой функции:

second() {
    if (this.isEmpty(this.AllMaterial)) {
      this.getSome();
    }
console.log(this.AllMaterial)
}


При вызове естественно в косоли:
undefined => console.log(this.AllMaterial)
somedate => console.log(data)

Как сделать эту конструкцию асинхронной?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
Ni55aN
@Ni55aN
async getSome() {
   const data = await this.http.get('/some').toPromise();
   
    console.log(data)
    
    return data;
}


async second() {
    if (this.isEmpty(this.AllMaterial)) {
      this.AllMaterial = await this.getSome()
    }
    console.log(this.AllMaterial)
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Ну: например так
getSome() {
   return this.http.get('/some')
}

second() {
    if (this.isEmpty(this.AllMaterial)) {
      this.getSome().subscribe( (data: Array<object>)=> {
        console.log(data)
        this.AllMaterial = data; // не делает запрос
        console.log(this.AllMaterial)
      }, err => {
        console.log(err)
      })
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы