- From: James M Snell <notifications@github.com>
- Date: Wed, 25 Jan 2023 07:07:47 -0800
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/1147@github.com>
While we are starting to see an expansion of Promise-based APIs that directly support cancelation using an AbortSignal, there are still a good number out there that do not. One common pattern for these, using async/await syntax is to check if the AbortSignal has been triggered after the await, before performing other actions, e.g.
```js
async function doSomething(options) {
const { signal } = options;
await someAsyncTaskThatDoesNotSupportCancelation();
if (signal.aborted) throw signal.reason;
// carry on my wayward son...
}
```
The equivalent for Promise then syntax would be:
```js
someAsyncTaskThatDoesNotSupportCancelation().then(() => {
if (signal.aborted) throw signal.reason;
// carry on...
});
```
The pattern is straightforward enough and not that complicated but I'm wondering if a simple `AbortSignal.wrap()` utility would be worthwhile to reduce boilerplate:
```js
const wrapped = signal.wrap(() => {
// carry on...
});
// calling wrapped will throw signal.reason if called after signal is triggered.
someAsyncTaskThatDoesNotSupportCancelation().then(wrapped);
```
I certainly wouldn't consider it a Must Have but a useful convenience?
--
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/issues/1147
You are receiving this because you are subscribed to this thread.
Message ID: <whatwg/dom/issues/1147@github.com>
Received on Wednesday, 25 January 2023 15:07:59 UTC