angular - Angular:取消订阅http请求
问题描述
我有一组上传大文件的 http 请求。
const requests = []
requests.push(HttpClient.post())
requests.push(HttpClient.post())
requests.push(HttpClient.post())
concat(...requests).subscribe()
我想取消一个文件上传请求例如,我想取消第二个文件上传请求。我怎样才能做到这一点?
我在这里使用 concat 是因为,请求应该一个接一个地完成,即按顺序完成。
解决方案
您可以通过管道传输结果请求,例如:
@Injectable()
class MyService {
private unsubscribe$ = new Subject<void>();
constructor(private http: HttpClient) {}
public doRequests() {
const requests = []
requests.push(this.http.post())
requests.push(this.http.post())
requests.push(this.http.post())
return concat(...requests).pipe(takeUntil(this.unsubscribe$)).subscribe()
}
public cancelRequests() {
this.unsubscribe$.next();
}
}
推荐阅读
- python - Python 3.x evdev 确定键盘和鼠标
- c# - 如何重构这些 switch case 以处理自然语言中的用户选择?
- outlook - 如何创建具有自定义值的 Outlook 日历事件?
- mysql - 如何选择仅按一个特定列分组的其他列的最大日期
- python - Lark 匹配自定义分隔符多行字符串
- javascript - 在 Mat-Select 中滚动到 Mat-0 选项的末尾时触发事件:Angular 6
- amazon-web-services - 创建统一的实例组集群,为实例组中的每个实例类型指定唯一的自定义 AMI
- c++ - 为什么这个模板不编译?
- compiler-errors - 在简单设置中降低 IR 期间出现异常,撰写中可能存在错误?
- java - Slick2D:正在加载:net.java.games.input.DirectAndRawInputEnvironmentPlugin