- From: Benjamin Gruenbaum <notifications@github.com>
- Date: Fri, 20 Nov 2020 07:29:07 -0800
- To: w3c/FileAPI <FileAPI@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Friday, 20 November 2020 15:29:20 UTC
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:
```js
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:
```js
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;
}
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/FileAPI/issues/159
Received on Friday, 20 November 2020 15:29:20 UTC