【问题标题】:what types do "toPromise()" exist on in order to create mock?为了创建模拟,“toPromise()”存在哪些类型?
【发布时间】:2020-05-15 00:02:18
【问题描述】:

我有无法编辑的代码,但我可以。

我无法编辑的代码如下:

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. return new Observable(string).delay(500);
  2. return new Promise(null);
  3. return Rx.Observable.of('o').delay(500);
  4. 不返回

但这些都不是正确的语法。

底线是我不想得到错误状态。在这种情况下,我希望它保持沉默。最好什么都不做。

【问题讨论】:

标签: angular promise rxjs return


【解决方案1】:

toPromise() 方法存在于 Observable 类中,因此您必须返回一个 Observable。由于您需要将其转换为 Promise,因此您可以返回例如 EMPTY,它将转换为立即解析为值 undefined 的 Promise。

你最终也可以使用of(undefined)

【讨论】:

猜你喜欢
  • 2018-03-18
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 2023-04-05
相关资源
最近更新 更多