-
Notifications
You must be signed in to change notification settings - Fork 47
Open
Description
Hey,
It would be useful to use the web platform standard cancellation method to abort readers.
Other web platform code (like fetch) supports cancellation through signals.
Code before:
async function readFile(file, { signal }) {
var reader = new FileReader();
const handler = e => reader.abort();
signal.addEventListener('abort', handler, { once: true });
reader.addEventListener('load', () => signal.removeEventListener('abort', handler));
reader.addEventListener('error', () => signal.removeEventListener('abort', handler));
const p = new Promise((resolve, reject) => {
reader.onload = (e) => resolve(e.target.result);
reader.onerror = (e) => reject(reader.error);
});
reader.readAsText(file);
return await p;
}
Possible suggested change, assuming signal support:
async function readFile(file, { signal }) {
var reader = new FileReader({ signal });
const p = new Promise((resolve, reject) => {
reader.onload = (e) => resolve(e.target.result);
reader.onerror = (e) => reject(reader.error);
});
reader.readAsText(file);
return await p;
}
Metadata
Metadata
Assignees
Labels
No labels