- From: Kyle Simpson <notifications@github.com>
- Date: Sat, 06 Feb 2021 14:49:41 -0800
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/946/774555123@github.com>
> The implementation works, so you can test it yourself.
Sorry, didn't see the implementation, missed that.
----
So, now that I've looked at it and played with it, I think I would end up using it like this:
```js
var ac = new AbortController();
ac.signal.pr = abortableTask(ac.signal,() => new Promise(()=>{}));
// elsewhere
setTimeout(()=>ac.abort(),5000);
try {
await Promise.race([
someAsyncOp(),
ac.signal.pr,
]);
}
catch (err) {
// ..
}
```
So, IOW... a util like `abortableTask(..)` would save me doing the `addEventListener(..)` stuff, but it's a bit wonky that I essentially need to create a never-resolving promise to ensure that *only* the cancellation token ends up resolving (rejecting) the `pr` promise.
It's slightly beneficial for my purposes, but not as nice as if there was just a `pr` (of whatever name) as a lazy getter or method on the signal, or (as proposed earlier), a util that does *only* the `addEventListener(..)` part of the equation and not the task stuff.
On that last point, is there any chance that `abortableTask(..)` could have the second param as optional, so it skipped that part of the machinery if omitted (as would effectively be the case in my usage)?
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/issues/946#issuecomment-774555123
Received on Saturday, 6 February 2021 22:49:54 UTC