Skip to content

Commit db4088a

Browse files
authored
Introduce AbortSignal.timeout()
Closes #951.
1 parent 16a01dd commit db4088a

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

dom.bs

+31
Original file line numberDiff line numberDiff line change
@@ -1771,6 +1771,7 @@ to <a for=AbortSignal>signal abort</a> on <a>this</a>'s <a for=AbortController>s
17711771
[Exposed=*]
17721772
interface AbortSignal : EventTarget {
17731773
[NewObject] static AbortSignal abort(optional any reason);
1774+
[NewObject] static AbortSignal timeout([EnforceRange] unsigned long long milliseconds);
17741775

17751776
readonly attribute boolean aborted;
17761777
readonly attribute any reason;
@@ -1784,6 +1785,11 @@ interface AbortSignal : EventTarget {
17841785
<dd>Returns an {{AbortSignal}} instance whose <a for=AbortSignal>abort reason</a> is set to
17851786
<var>reason</var> if not undefined; otherwise to an "{{AbortError!!exception}}" {{DOMException}}.
17861787

1788+
<dt><code>AbortSignal . <a method for=AbortSignal lt=timeout(milliseconds)>timeout</a>(<var>milliseconds</var>)</code>
1789+
<dd>Returns an {{AbortSignal}} instance which will be aborted in <var>milliseconds</var>
1790+
milliseconds. Its <a for=AbortSignal>abort reason</a> will be set to a
1791+
"{{TimeoutError!!exception}}" {{DOMException}}.
1792+
17871793
<dt><code><var>signal</var> . <a attribute for=AbortSignal>aborted</a></code>
17881794
<dd>Returns true if <var>signal</var>'s {{AbortController}} has signaled to abort; otherwise false.
17891795

@@ -1836,6 +1842,31 @@ are:
18361842
<li>Return <var>signal</var>.
18371843
</ol>
18381844

1845+
<p>The static <dfn method for=AbortSignal><code>timeout(<var>milliseconds</var>)</code></dfn> method
1846+
steps are:
1847+
1848+
<ol>
1849+
<li><p>Let <var>signal</var> be a new {{AbortSignal}} object.
1850+
1851+
<li><p>Let <var>global</var> be <var>signal</var>'s <a>relevant global object</a>.
1852+
1853+
<li>
1854+
<p><a>Run steps after a timeout</a> given <var>global</var>, "<code>AbortSignal-timeout</code>",
1855+
<var>milliseconds</var>, and the following step:</p>
1856+
1857+
<ol>
1858+
<li><p><a>Queue a global task</a> on the <a>timer task source</a> given <var>global</var> to
1859+
<a for=AbortSignal>signal abort</a> given <var>signal</var> and a new
1860+
"{{TimeoutError!!exception}}" {{DOMException}}.
1861+
</ol>
1862+
1863+
<p>For the duration of this timeout, if <var>signal</var> has any event listeners registered for
1864+
its {{AbortSignal/abort}} event, there must be a strong reference from <var>global</var> to
1865+
<var>signal</var>.
1866+
1867+
<li><p>Return <var>signal</var>.
1868+
</ol>
1869+
18391870
<p>The <dfn attribute for=AbortSignal>aborted</dfn> getter steps are to return true if <a>this</a>
18401871
is [=AbortSignal/aborted=]; otherwise false.
18411872

0 commit comments

Comments
 (0)