【发布时间】:2018-01-29 15:55:39
【问题描述】:
我有一个看起来像这样的服务:
delete<T>(id: number): Observable<T> {
return this.http.delete<T>(this.url + '/delete/' + id)
//etc
//etc
}
现在,我想从forEach 循环中调用此方法,而不会耗尽数据库。
理论上,我可以像这样递归地尝试:
doDeletion(index){
service.delete()
.subscribe(success => doDeletion(++index),
err => doDeletion(++index));
}
但是,这似乎不是正确的方法。 forkJoin 属性会为此工作吗?如何在每次调用之前等待而不杀死数据库?
谢谢
【问题讨论】:
-
没有。 forkJoin 会并行运行它们——我认为这不是你想要的。如果您可以控制该服务,我建议向该服务添加一个方法,该方法获取要删除的项目列表,并让该服务管理该过程。
-
是的,这就是我想象的@GreyBeardedGeek。我真的很想在没有大量修改的情况下使用旧的后端,因为我正在从 Angular 1 重写前端。但我想这是不可能的......
-
查看mergeMap(又名flatMap),教程medium.com/@w.dave.w/…
-
你能改变你调用的后端服务吗?在您当前的实施中,您正在为要删除的每个项目发送一个专用请求。这可能会变慢并导致大量流量。如果你想完全删除你的表,你可以创建一个“delete-all”服务并触发一个删除数据库表中每个条目的 SQL 语句。
标签: angular rxjs observable angular2-observables fork-join