- From: Domenic Denicola <notifications@github.com>
- Date: Mon, 23 May 2022 08:10:41 -0700
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/1082/1134799028@github.com>
How I think of this:
Our base primitive is `AbortController`, which gives full programmatic control over when to abort, and with what reason.
We then add helpers for common cases where we can achieve a lot of simplicity. So `AbortSignal.timeout()` compresses us from
```js
const controller = AbortController();
setTimeout(() => controller.abort(new DOMException("TimeoutError", "..."), ms);
return controller.signal;
```
to just `AbortSignal.timeout(ms)`.
The compression here would probably be something like:
```js
const controller = AbortController();
let timerId = setTimeout(() => controller.abort(new DOMException("TimeoutError", "..."), ms);
onUpdate(() => {
clearTimeout(timerId);
timerId = setTimeout(() => controller.abort(new DOMException("TimeoutError", "..."), ms);
});
return controller.signal;
```
to
```js
const { signal, reset } = createHelper(ms);
onUpdate(() => reset());
return signal;
```
I'm not sure this kind of compression is worth it, but maybe it is.
If it were added, I think it could be separate from any Fetch addition. I.e., any Fetch addition would probably build on top of such a helper, but not in a web-developer-visible way.
--
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/issues/1082#issuecomment-1134799028
You are receiving this because you are subscribed to this thread.
Message ID: <whatwg/dom/issues/1082/1134799028@github.com>
Received on Monday, 23 May 2022 15:10:52 UTC