Angular 2 HttpClient 删除集合
Angular 2 HttpClient Delete collection
我有一个看起来像这样的服务:
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
属性 是否适用于此?如何在不杀死数据库的情况下在每次调用之前等待?
谢谢
这实际上取决于您期望的输入,但通常您可以使用 concatMap
始终等待当前内部 Observable 完成:
const ids = [42, 24, 17, 1337];
Observable.from(ids)
.concatMap(id => this.http.delete<T>(this.url + '/delete/' + id))
.subscribe();
前一个完成后 运行 每个 delete()
。
您提到您可能想要使用递归。例如,如果一个 delete()
调用 returns 另一个您想要 delete()
的 ID。对于递归调用它的回调的 expand()
运算符来说,这似乎是一件好事:
Observable.of(id)
.expand(id => id
? this.http.delete(this.url + '/delete/' + id).map(...) // map the response into another id
: Observable.empty()
)
.subscribe();
我有一个看起来像这样的服务:
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
属性 是否适用于此?如何在不杀死数据库的情况下在每次调用之前等待?
谢谢
这实际上取决于您期望的输入,但通常您可以使用 concatMap
始终等待当前内部 Observable 完成:
const ids = [42, 24, 17, 1337];
Observable.from(ids)
.concatMap(id => this.http.delete<T>(this.url + '/delete/' + id))
.subscribe();
前一个完成后 运行 每个 delete()
。
您提到您可能想要使用递归。例如,如果一个 delete()
调用 returns 另一个您想要 delete()
的 ID。对于递归调用它的回调的 expand()
运算符来说,这似乎是一件好事:
Observable.of(id)
.expand(id => id
? this.http.delete(this.url + '/delete/' + id).map(...) // map the response into another id
: Observable.empty()
)
.subscribe();