angular - Angular2 中的 Promise 和 Observable 结合在一起

标签 angular

我正在阅读有关 Promise 和 Observable 的内容,我不确定我的代码是否对 angular2+ 有效

我正在将 Promise 与新的 http 客户端结合使用

return new Promise((resolve) => {
      this.http
        .get('http://x.x.com/api/x/' + x + '/' + x + '/' + x + '', {
          headers: this.authenticationService.getAuthorizationHeader()
        })
        .subscribe(
          (data: any) => {
            resolve(data.map((row) => {
              return new Candlestick(row.time, row.open, row.high, row.low, row.close, row.volume)
            }));
          },
          (error: HttpErrorResponse) => {
            if (error.error instanceof Error) {
              console.log('An error occurred:', error.error.message);
            } else {
              console.log(`Backend returned code ${error.status}, body was: ${error.error}`);
            }

            return resolve();
          });
    });

这个例子是好还是坏?

最佳答案

代码看起来不错,但如果您的目的是使用 observable,那么您可以使用 toPromise

this.http
.get('http://x.x.com/api/x/' + x + '/' + x + '/' + x + '', {
          headers: this.authenticationService.getAuthorizationHeader()
})
.toPromise()
.then()

此外,在您的代码中,您正在对错误执行resolve(),这对我来说是错误的,我最好调用拒绝。

如果您想要重试或任何其他很酷的事情,您的代码会更有意义,但如果您需要 Promise,则使用 toPromise。

关于angular - Angular2 中的 Promise 和 Observable 结合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56471137/

相关文章:

angular - 在 Angular 2 应用程序中使用接口(interface)和 OpaqueToken 时出现 Typescript 警告

json - 从本地Json文件中获取数据ionic 3

angular - 检查 Angular 7 中递归对象的属性

javascript - Angular:我想将 div 的焦点从箭头键按钮移到另一个

angular - 使用注入(inject)器根据类名获取服务

angular - ionic2 - 生成命令仅适用于使用 ionic-angular >= 3.0.0 的项目

angular - 附加到组件时如何调整 Angular CDK 覆盖背景的大小

angular - 使用变量名进行错误检查的语法

reactjs - 如何在 momentjs 中获取 endOf day toISOString() 但毫秒应该是 .000Z 而不是 .999Z

javascript - Amplify.service.api.get 返回sampleCloudAPI 不存在