Javascript 用户事件时流保护程序取消/中止下载

Javascript 用户事件时流保护程序取消/中止下载,javascript,download,fetch,large-files,Javascript,Download,Fetch,Large Files,我使用下载更大的文件,它的工作非常好 同时,我希望处理来自用户的取消事件,以停止从服务器获取内容 是否可以使用AbortController和AbortSignal停止读取数据的可读流 下载部分的示例代码如下 fetch(url,{signal:abortSignal}) 。然后(resp=>{ for(变量对resp.headers.entries()){ log(对[0]+':'+对[1]); } 总数=数量(分别为headers.get('X-zowe-filesize'); 返回相应的主

我使用下载更大的文件,它的工作非常好

同时,我希望处理来自用户的取消事件,以停止从服务器获取内容

是否可以使用AbortController和AbortSignal停止读取数据的可读流

下载部分的示例代码如下

fetch(url,{signal:abortSignal})
。然后(resp=>{
for(变量对resp.headers.entries()){
log(对[0]+':'+对[1]);
}
总数=数量(分别为headers.get('X-zowe-filesize');
返回相应的主体;
})
。然后(res=>{
var progress=newtransformstream({
转换(块、控制器){
加载+=块长度;
控制器排队(区块);
elem.style.width=(加载/总计)*100+'%;
elem.innerHTML=(已加载/总计)*100+'%;
}
})
常量readableStream=res
//更优化
if(window.writeablestream&&readableStream.pipeTo){
返回可读流
.pipeThrough(进度)
.pipeTo(文件流,{signal:abortSignal})
.然后(()=>console.log('done writing'))
}
window.writer=fileStream.getWriter()
const reader=readableStream.getReader()
常量泵=()=>reader.read()
.然后(res=>res.done
?writer.close()
:writer.write(res.value)。然后(pump))
泵()
})