- From: Jake Archibald <notifications@github.com>
- Date: Mon, 14 Aug 2017 10:52:51 +0000 (UTC)
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/493@github.com>
https://dom.spec.whatwg.org/#abortsignal-signal-abort
Currently the order is:
1. If signal’s aborted flag is set, then return.
1. Set signal’s aborted flag.
1. **For each algorithm in signal’s abort algorithms: run algorithm.**
1. Empty signal’s abort algorithms.
1. **Fire an event named abort at signal.**
If you want to create a new signal that copies another signal, you do something like this:
1. Let *originalSignal* be a signal we got from somewhere.
1. Let *signal* be a new `AbortSignal`.
1. [Add](https://dom.spec.whatwg.org/#abortsignal-add) the following steps to *originalSignal*:
1. [Signal abort](https://dom.spec.whatwg.org/#abortsignal-signal-abort) on *signal*.
1. Return *signal*.
A side effect of this, is the "abort" event will despatch on signal before originalSignal.
```js
const controller = new AbortController();
const signal = controller.signal;
const request = new Request('.', {signal});
const requestClone = request.clone(); // this copies the signal as above.
request.signal.addEventListener('abort', () => console.log('original'));
requestClone.signal.addEventListener('abort', () => console.log('clone'));
controller.abort();
```
In the code above, "clone" is logged before "original". Is this a problem?
cc @domenic @annevk @wycats @mikewest @bterlson @jyasskin
--
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/493
Received on Monday, 14 August 2017 10:53:14 UTC