как я могу дождаться http запроса до fini sh in angular 8? - PullRequest
0 голосов
/ 18 февраля 2020

это мой сервис

existWayBillByRsBillNumber(billNumber: string){
    return  this.http.get<boolean>(this.baseUrl + 'Common/ExistWayBillByRsBillNumber/'+billNumber);
  }

это сервисный звонок

this.commonService.existWayBillByRsBillNumber(this.buyerWaybill.waybillNumber).subscribe(
  response => {
    let exist = <Boolean>response;
    if (exist) {
      console.log(1);
      this.toastService.error('ზედდებული ნომრით ' + this.buyerWaybill.waybillNumber + " უკვე არსებობს!");
      return false;
    }
  }
);
console.log(2);
    }
  }
);

в консоли печатается 2 и после 1 введите описание изображения здесь

как я могу ждать ответа службы

1 Ответ

1 голос
/ 18 февраля 2020

Ваш код работает должным образом.

Если бы мы пошагово просмотрели ваш код, он бы go что-то вроде:

  1. Позвонил в службу
  2. Сделать http запрос
  3. Дождаться ответа, вернуть наблюдаемый
  4. console.log (2)
  5. ...
  6. HTTP-ответ возвращается
  7. Выполнить обратный вызов абонента
  8. console.log (1) [внутри условия if]

Таким образом, вы уже ждете ответа от службы - это то, где вы находитесь проверка ответа и условное ведение журнала 1 на консоли.

У вас есть некоторые проблемы с тем, как вы делаете запрос и обрабатываете ответ, но ваш вопрос эффективно спрашивает, почему 2 было зарегистрировано до 1.

Редактировать:

Это физическая версия описанных выше шагов с точки зрения компонента:


console.log('1. Call service);

this.commonService
  .existWayBillByRsBillNumber(this.buyerWaybill.waybillNumber)
  .subscribe(response => {
    console.log('7. Execute callback of subscriber'); 

    if (response === true) {
      // handle true
    } else {
      // handle false
    }
  });

console.log(2);

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