rxjs observable ajax,如何从Observable中止Ajax请求?

本文探讨如何在使用RxJS和Observable进行文件上传到PHP服务器时添加取消功能。现有的代码能够正常工作,但缺乏取消上传的机制。作者寻求通过修改现有代码来实现优雅的取消上传功能,而不仅仅是取消Observable订阅,因为这可能导致资源浪费。问题在于如何在取消订阅时同时调用xhr.abort()来终止上传过程。
摘要由CSDN通过智能技术生成

我的代码包含了我用来将文件上传到我的PHP服务器的简单函数(xhr嵌套在一个请求中RxJS/Observable):

fileUpload(file: File): Observable {

return new Observable( observer => {

let xhr:XMLHttpRequest = new XMLHttpRequest();

xhr.onreadystatechange = () => {

if (xhr.readyState === 4) {

if (xhr.status === 200) {

observer.next(JSON.parse(xhr.response));

} else {

observer.error(xhr.response);

observer.complete();

}

}

};

xhr.open('POST', '__BACKEND__?action=file-upload', true);

var formData = new FormData();

formData.append('file', file, file.name);

xhr.send(formData);

});

}

它完全正常,但现在我还想为它添加一些取消机制.

只是取消订阅Observable是行不通的,因为我需要以某种方式打电话xhr.abort()或浪费宝贵的资源与大量上传.

是否可以通过修改此代码来获得优雅的解决方案,或者我做错了因为我正在使用RxJS/Observable这个任务?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值