我知道异步方法应该是非阻塞的。但我通常看到它们应用于外部操作,如fetch(). 即:在浏览器之外处理的东西。
但是FileReader()API 呢?文件处理由浏览器完成,对吗?
const reader = new FileReader();
reader.onload = (event) => {
console.log(event.target.result);
};
reader.onerror = (event) => {
console.log(event.target.result);
};
// **ONE** OF THE POSSIBLE METHODS BELOW
reader.readAsText(file);
reader.readAsArrayBuffer(file);
reader.readAsBinaryString(file);
reader.readAsDataURL(file);
问题
如果我读取一个 100Gb 的文件,它会在某个时候阻塞我的主线程吗?我的意思是,即使它在运行之前等待调用堆栈为空,每当它处理一些大文件时,它会阻塞我的主线程吗?在这种情况下它是如何工作的?
不管答案是什么,它是否适用于运行最终由浏览器处理的异步操作的任何方法?
狐的传说
相关分类