【发布时间】: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 的中间件