http toPromise вернуть объект - PullRequest
       5

http toPromise вернуть объект

0 голосов
/ 02 февраля 2019

У меня есть функция ниже:

getUser(userId: string) : Observable<any> {
    var getUserURL = `/api/users/${userId}`,
        getUserStatus = this.getUserStatus();


    return this.http.get<any>(getUserURL).pipe(
      catchError(this.handleError('getUser - Get User failed', null))
    );
  }

Это возвращает данные из ответа от REST API для этого URL /api/users/${userId} toPromise

Есть ли способ, которым я могу вернутьобъект, который включает данные ответа от REST API + локальные данные (getUserStatus), который в данном случае является логическим.Спасибо

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Как @mtputlz сказал, что вы возвращаете Observable.Если вы хотите вернуть ответ, который в вашем случае является логическим.Тогда мы можем преобразовать заметное в обещание:

async getUser(userId: string) : any {
    var getUserURL = `/api/users/${userId}`,
        getUserStatus = this.getUserStatus();


    return await this.http.get<any>(getUserURL).pipe(
      catchError(this.handleError('getUser - Get User failed', null))
    ).toPromise();
  }
0 голосов
/ 02 февраля 2019

Ваш запрос не возвращает обещание, если оно не включено в ваш пример.У вас есть наблюдаемая.

Если я правильно понял ваш вопрос.Если вы хотите вернуть HTTP-ответ + локальный статус, вы должны сделать что-то подобное, используя операторы:

Служба

getUser(userId: string) : Observable<any> {
  const path = `/api/users/${userId}`
  const userStatus = this.getUserStatus();

  return this.http.get<any>(path)
    .pipe(
      map((response: any) => {
        return { response, userStatus };
      }),
      catchError(this.handleError('[USER]::getUser Failed', null))
    );
}

Компонент

this.getUser(1000).subscribe(({response, userStatus}) => { 
  // Handle response and status
  console.log('RESPONSE', response);
  console.log('USER_STATUS', userStatus);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...