Как отправить несколько запросов Http последовательно в Angular - PullRequest
0 голосов
/ 29 апреля 2019

Я написал ниже код для вызова API каждый раз, когда происходит пост-запрос, первый API вызывается, а второй не вызывается

  public post(postUrl: string, model: any): Observable<any> {
    return this.validateTokenStatus().pipe(map(response => {
        console.log('response', response);
        // if (response) {
        console.log('response2', response);
        const url = `${environment.webApiUrl}/${postUrl}`;
        this.spinnerService.start();
        console.log('response21', response);
        return this._http.post(url, model).pipe(map((res: any) => {
            console.log('response11', response);
            this.spinnerService.stop();
            return res;
        },
        error => {
            console.log('error');
            return error;
        }));
        // } else {
       // console.log('response3', response);
        // return true;
        // }
    }));
}

1 Ответ

1 голос
/ 29 апреля 2019

Если вы хотите выполнить несколько асинхронных операций в последовательности друг за другом, вы обычно захотите использовать одну из следующих функций: mergeMap, switchMap или concatMap.Нечто подобное может работать в такой ситуации:

return this.validateTokenStatus()
  .pipe(
    switchMap(response => {
        const url = `${environment.webApiUrl}/${postUrl}`;
        this.spinnerService.start();
        return this._http.post(url, model);
    }),
    map((res: any) => {
        this.spinnerService.stop();
        return res;
    })
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...