angular5 как сделать asyc запрос? - PullRequest
0 голосов
/ 20 марта 2019

В моем проекте я сделал несколько запросов к серверу, чтобы получить данные для одной страницы.Я хочу сделать все запросы asyc.Прямо сейчас, пока я не получу ответ от первого запроса, ответ второго запроса не загружен.

Так что в основном я просто хочу получить запрос и ответ asyc, чтобы один запрос не ожидал другого запроса.Конец.Прямо сейчас это похоже на модную одежду.Но я хочу из нескольких запросов, какой запрос получить первый ответ должен загружаться первым.

это код моего компонента

  constructor(private _dashboardService: DashboardService) {

  this.getLineChart();
  this.todayPaymentDetails();
  this.todayPaymentMethod();
  this.rewardCustomers();
  this.getAverageBill();
  this.getItemByVolumn();
  this.getItemBySales();
} 

todayPaymentMethod(id=null){
  this.paymentMethodsLoader=0;
  this._dashboardService.getTodayPaymentMethod(id).subscribe(res =>{
    if(null != res.data && '' != res.data){
      this.location = res.data.location;
      this.payment_methods = res.data.payment_methods;
    }
    this.paymentMethodsLoader=1;
  });
}

это мой сервисный код:

getTodayTotalPayment(id)  : Observable<any> {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this._http.get(environment.apiUrl + constants.API_V1 + 'today-total-payment/'+id, options)
.map(res => res.json())
.catch((error: any) => Observable.throw(error.json().error || error));

}

Здесь показан код только для одного запроса, но, как показано в конструкторе, я отправляю несколько запросов одновременно.

1 Ответ

0 голосов
/ 21 марта 2019

Во-первых, не рекомендуется вызывать такую ​​функцию в конструкторе.

Для выполнения нескольких запросов или наблюдаемых вместе используйте операторы, т.е. switchMap и т. Д.

Следуйте по этому видео ссылка , связанная с циклом событий в JavaScript, это улучшит выполнение JavaScript, концепции цикла событий. Также объясняется, как выполняется асинхронный код.

Надеюсь, это поможет.

...