Какие типы существуют toPromise () для создания макета? - PullRequest
0 голосов
/ 29 января 2020

У меня есть код, который я не могу редактировать, и код, который я могу редактировать.

код, который я не могу редактировать, следующий:

this.getLogs()
    .toPromise()
    .then((resp: any) => ({
      data: resp['results'],
      totalCount: resp['count']
}));

код, который я могу редактировать, следующий.

  private getLogs() {
    if (this.id) { // I added this
      params = {};
      params['log_id'] = this.id;
      const url = `${AppGlobal.API_URL}${thislogsUrl}`;
      return this.http.post(
        url,
        params,
        this.authService.getRequestOptions()
      ).pipe(catchError(error => this.handleError(error)));
    } else {  // I added this
      return <---- What do I put here????
    }
  }

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

Я возвращаю, должен иметь тип "toPromise ()". но на самом деле я не хочу делать вызов API в этом случае (в случае, когда мне не хватает параметра)

Я пытался:

  1. вернуть новый Observable ( string) .delay (500);
  2. вернуть новое Promise (null);
  3. вернуть Rx.Observable.of ('o'). delay (500);
  4. не возвращает

, но ни один из них не является даже правильным синтаксисом сам по себе.

Суть в том, что я не хочу получать сообщение об ошибке. Я хочу, чтобы в этом случае было тихо. желательно ничего не делать.

1 Ответ

1 голос
/ 29 января 2020

toPromise() метод существует в классе Observable, поэтому вы должны вернуть Observable. Поскольку вам нужно превратить его в Обещание, вы можете вернуть, например, EMPTY, которое будет превращено в Обещание, которое немедленно разрешается со значением undefined.

В конечном итоге вы также можете использовать of(undefined).

...