javascript - addEventListener 多次触发
问题描述
所以我正在尝试将 blob 转换为实际文件。为了减少线程负载,我制作了 worker.js 文件,该文件侦听事件,然后将事件数据推送到数组,最后将其转换为 blob。
function download() {
setGotFile(false);
const dwn = function (event) {
let stream = event.data.stream();
console.log(stream);
const fileStream = streamSaver.createWriteStream(fileNameRef.current);
console.log(fileStream);
stream.pipeTo(fileStream);
stream = null;
}
worker.postMessage("download");
worker.addEventListener("message", dwn,false)
}
下载功能第一次运行良好。但是,如果被触发,事件就会被累加,这使得它会多次下载文件。
worker.js 文件:-
let array = [];
self.addEventListener("message", event => {
console.log(array);
if (event.data === "download") {
const blob = new Blob(array);
self.postMessage(blob);
array = [];
} else {
array.push(event.data);
}
})
解决方案
推荐阅读
- css - SASS/SCSS - 错误:$color:currentColor 不是颜色
- java - 无法下载 TensorFlow for Java
- python - 在客户端和另一个 websocket 之间连接的 Python Websocket
- ruby-on-rails - JSON::ParserError: 767: 'MyText' 中的意外令牌(Rails & Minitest)
- java - Firebase 实时数据库(不上传)
- java - 如何在 router.route("/api/*").handler 中使用协程?
- ios - 在 NSFetchedResultsController 中对部分进行排序
- python - python pygalmesh 无法使工作示例
- android - Flutter 如何在我的应用程序中使用电话密码
- python-3.x - 为什么代码只匹配第一个和最后一个匹配而不是全部?