Конвертировать код Rxjs в Angular 6 и последние версии rxjs - PullRequest
0 голосов
/ 13 сентября 2018

Сценарий:

  • Новое в Angular
    Попытка перенести код Angular 2 в Angular 6 .
  • Любая идея, как я могу переписать следующий код в угловом формате 6


Код Для записи в угловом формате 6:

return this._http.post(this.apiBaseUrl + "/api/login", body, options)
   .timeoutWith(Constant.timeout, Observable.throw(new Error(Constant.timeoutMsg)))
      .map(response => {
            const result = response.json() as LoginResultModel;

            if (result.AccessToken != null) {
                this.setLoginToken(result);
                return result;
            } else {
                return response;
            }
        });

1 Ответ

0 голосов
/ 13 сентября 2018

Просто используйте метод pipe и поместите оба оператора timeoutWith и map как функции в качестве его параметров:

import { throwError } from 'rxjs';
import { map, timeoutWith } from 'rxjs/operators';

return this._httpClient.post<LoginResultModel>(this.apiBaseUrl + "/api/login", body, options)
  .pipe(
    timeoutWith(Constant.timeout, throwError(new Error(Constant.timeoutMsg))),
    map(result => {
      if (result.AccessToken != null) {
        this.setLoginToken(result);
        return result;
      } else {
        return response;
      }
    })
  );

Подробнее о переносимых операторах в RxJS 6:

https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md

Обратите внимание, я также использовал HttpClientModule, где вам не нужно использовать метод response.json(), подробнее об этом здесь:

https://angular.io/guide/http

...