Возвращаем значение обещания от сервиса к компоненту - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть класс обслуживания следующим образом

import { RetrieveMultipleResponse } from 'xrm-webapi/dist/models';

@Injectable()
export class CrmService {

   headers: any;
   error : any;
   store : Observable<any>;

   constructor(public crmDataService : CrmDataService) {}

   retrieveAllTeams(): Promise<RetrieveMultipleResponse> {
       return retrieveMultiple(this.crmDataService.config,"teams",null);
   }

}

И я вызываю его в компоненте так:

load() {
    this.crmService.retrieveAllTeams()
        .then((results) => {
            if(results.value !== undefined && results.value !== null) {
                var teams = results.value;
            }
        },
        (error) => {

        });
}

Так что retrieveAllTeams возвращает Promise типаRetrieveMultipleResponse.Интерфейс выглядит следующим образом:

export interface RetrieveMultipleResponse {
    value: Entity[];
    '@odata.nextlink': string;
}

Я бы хотел не использовать вложенные обещания в своем компоненте, поэтому я использую Angular 6. Я пытался использовать async и await, но я могу 'не могу понять, как получить результаты и ошибку из метода retrieveAllTeams в моем компоненте.

1 Ответ

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

Я бы хотел не использовать вложенные обещания в своем компоненте, поэтому я использую Angular 6, я пытался использовать async и await, но не могу понять, как получить результаты и ошибку из retrieveAllTeams

Вы можете сделать это следующим образом:

async load() {

  // use try-catch block for handling errors
  try {
    // const result will have results from the 
    // retrieveAllTeams
    const result = await this.crmService.retrieveAllTeams();

    if (results.value !== undefined && results.value !== null) {
      var teams = results.value;
    }
  } catch (err) {
    // catch errors if any
    console.log(err);
  }
}
...