【问题标题】:Angular 9 http call with nestjs backend带有nestjs后端的Angular 9 http调用
【发布时间】:2020-06-10 13:37:44
【问题描述】:

我有一个带有nestjs后端rest api的Angular(9)前端(在nodejs中) 我在后端调用的端点做了一些相当复杂的操作,大约需要 2 分钟才能响应。 在前端,我使用 subscribe 来订阅这样的响应:

this.metaService.subscribe(
  result => {
  //Handle result
  },
  error => {
    this.subscription.unsubscribe();
    console.error('Error: ' + error);
  },
  () => {
    this.subscription.unsubscribe();
    console.error('Completed');
  });

问题是在后端它开始一遍又一遍地执行代码。请注意,它不会再次执行 http 调用(我可以从开发人员工具中的网络选项卡中看到这一点),它一直处于待处理状态) 如果我这样做,这似乎可行

.pipe(take(1)).subscribe(

然后它不会在后端进行循环,但它会立即完成订阅(并且 http 在网络选项卡中处于取消状态) 我在 Windows 机器(linux 子系统)上的本地主机中运行它。节点版本为 12.14.1

有没有人知道是什么原因造成的以及如何解决?

-贾尼

【问题讨论】:

  • 您能发布您的 NestJS 路由处理程序代码吗?如果没有后续网络请求,则听起来错误在 API 中。如果在使用 take(1) 时从 Angular 取消请求,那么这可能会导致循环停止。
  • 这是控制器,codeshare.io/5wRZpxretrieveMetadataForCompare 返回一个 Promise,并配置了一个设置 uid 的中间件

标签: angular nestjs subscribe


【解决方案1】:

这不是答案:我想我能够弄清楚这一点。我在 for 循环中有几个静态异步方法,这似乎是造成这种情况的原因。我现在真的不知道为什么,但是当我删除这些方法并将它们转换为非静态异步方法(仍在 for 循环中)时,我不再遇到这个问题了。 我不知道为什么它们首先是静态的......

【讨论】:

    猜你喜欢
    • 2019-06-30
    • 2017-05-07
    • 2020-07-26
    • 2021-05-25
    • 1970-01-01
    • 2013-02-02
    • 2020-09-02
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多