Skip to content

Commit 6473103

Browse files
committed
Move sections around
1 parent 828da16 commit 6473103

File tree

1 file changed

+111
-112
lines changed

1 file changed

+111
-112
lines changed

fetch.bs

Lines changed: 111 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -6717,6 +6717,62 @@ agent's <a>CORS-preflight cache</a> for which there is a <a>cache entry match</a
67176717
</ol>
67186718
</div>
67196719

6720+
<h3 id=deferred-fetching>Deferred fetching</h3>
6721+
6722+
<p>Deferred fetches allow callers to request that a fetch is invoked at the latest possible moment,
6723+
when a <a>fetch group</a> is <a for="fetch group">terminated</a>, or after a timeout after it is
6724+
<a for="fetch group">deactivated</a>.
6725+
6726+
<div algorithm="request-a-deferred-fetch">
6727+
<p>To <dfn>request a deferred fetch</dfn> given a
6728+
<a for=/>request</a> <var>request</var> and a null-or-{{DOMHighResTimeStamp}}
6729+
<var>inactiveTimeout</var> (default null):
6730+
6731+
<ol>
6732+
<li><p>Assert: <var>request</var>'s <a for=request>client</a> is an
6733+
<a>environment settings object</a>.
6734+
6735+
<li>Let <var>totalScheduledDeferredBytesForOrigin</var> be 0.
6736+
6737+
<li>
6738+
<p>If <var>request</var>'s <a for=request>body</a> is not null then:
6739+
6740+
<ol>
6741+
<li><p>If <var>request</var>'s
6742+
<a for=request>body</a>'s <a for=body>length</a> is null, then throw a {{TypeError}}.
6743+
6744+
<li><p>Set <var>totalScheduledDeferredBytesForOrigin</var> to <var>request</var>'s
6745+
<a for=request>body</a>'s <a for=body>length</a>.
6746+
</ol>
6747+
</li>
6748+
6749+
<li><p><a for=list>For each</a> <a>deferred fetch record</a> <var>deferredRecord</var> in
6750+
<var>request</var>'s <a for=request>client</a>'s <a for=fetch>fetch group</a>'s
6751+
<a for="fetch group">deferred fetch records</a>: if <var>deferredRecord</var>'s
6752+
<a for="deferred fetch record">request</a>'s <a for=request>body</a> is not null and
6753+
<var>deferredRecord</var>'s <a for="deferred fetch record">request</a>'s <a for=request>URL</a>'s
6754+
<a for=url>origin</a> is <a>same origin</a> with <var>request</var>'s <a for=request>URL</a>'s
6755+
<a for=url>origin</a>, then increment <var>totalScheduledDeferredBytesForOrigin</var> by
6756+
<var>deferredRecord</var>'s <a for="deferred fetch record">request</a>'s <a for=request>body</a>'s
6757+
<a for=body>length</a>.
6758+
6759+
<li><p>If <var>totalScheduledDeferredBytesForOrigin</var> is greater than 64 kilobytes, then
6760+
throw a {{QuotaExceededError}}.
6761+
6762+
<li><p>Let <var>deferredRecord</var> be a new <a>deferred fetch record</a> whose
6763+
<a for="deferred fetch record">request</a> is <var>request</var>.
6764+
6765+
<li><p>Set <var>deferredRecord</var>'s <a for="deferred fetch record">inactive timeout</a> to
6766+
<var>inactiveTimeout</var>.
6767+
6768+
<li><p><a for=list>Append</a> <var>deferredRecord</var> to <var>request</var>'s
6769+
<a for=request>client</a>'s <a for=fetch>fetch group</a>'s
6770+
<a for="fetch group">deferred fetch records</a>.
6771+
6772+
<li><p>Return <var>deferredRecord</var>.
6773+
</ol>
6774+
</div>
6775+
67206776

67216777

67226778
<h2 id=fetch-api>Fetch API</h2>
@@ -8431,7 +8487,7 @@ otherwise false.
84318487
</div>
84328488

84338489

8434-
<h3 id=fetch-method>Fetch method</h3>
8490+
<h2 id=fetch-method>Fetch methods</h2>
84358491

84368492
<pre class=idl>
84378493
partial interface mixin WindowOrWorkerGlobalScope {
@@ -8571,6 +8627,60 @@ with a <var>promise</var>, <var>request</var>, <var>responseObject</var>, and an
85718627
</div>
85728628

85738629

8630+
<h3 id=request-deferred-fetch-method>RequestDeferredFetch method</h3>
8631+
8632+
<pre class=idl>
8633+
8634+
dictionary DeferredRequestInit : RequestInit {
8635+
DOMHighResTimeStamp inactiveTimeout;
8636+
};
8637+
8638+
partial interface mixin WindowOrWorkerGlobalScope {
8639+
[NewObject] Promise&lt;Response> requestDeferredFetch(RequestInfo input, optional DeferredRequestInit init = {});
8640+
};
8641+
</pre>
8642+
8643+
<div algorithm="dom-requestdeferredfetch">
8644+
<p>The
8645+
<dfn id=dom-global-requestdeferredfetch method for=WindowOrWorkerGlobalScope><code>requestDeferredFetch(<var>input</var>, <var>init</var>)</code></dfn>
8646+
method steps are:
8647+
8648+
<ol>
8649+
<li><p>Let <var>promise</var> be a new promise.
8650+
8651+
<li><p>Let <var>requestObject</var> be the result of invoking the initial value of {{Request}} as
8652+
constructor with <var>input</var> and <var>init</var> as arguments. If that threw an exception,
8653+
<a for=/>reject</a> <var>promise</var> with that exception and return <var>promise</var>.
8654+
8655+
<li><p>If <var>requestObject</var>'s <a for=Request>signal</a> is <a for=AbortSignal>aborted</a>,
8656+
then <a for=/>reject</a> <var>promise</var> with <var>requestObject</var>'s
8657+
<a for=Request>signal</a>'s <a for=AbortSignal>abort reason</a> and return <var>promise</var>.
8658+
8659+
<li><p>Let <var>request</var> be <var>requestObject</var>'s <a for=Request>request</a>.
8660+
8661+
<li><p>Let <var>inactiveTimeout</var> be null.
8662+
8663+
<li><p>If <var>init</var> is given and <var>init</var>["<code>inactiveTimeout</code>"]
8664+
<a for=map>exists</a> then set <var>inactiveTimeout</var> to
8665+
<var>init</var>["<code>inactiveTimeout</code>"].
8666+
8667+
<li><p>If <var>inactiveTimeout</var> is not a {{DOMHighResTimeStamp}} then throw a {{TypeError}}.
8668+
8669+
<li><p>Let <var>deferredRecord</var> be the result of calling
8670+
<a>request a deferred fetch</a> given <var>request</var> and <var>inactiveTimeout</var>. If that
8671+
threw an exception, <a for=/>reject</a> <var>promise</var> with that exception and return
8672+
<var>promise</var>.
8673+
8674+
<li><p>Set <var>deferredRecord</var>'s <a for="deferred fetch record">invoke callback</a> to
8675+
<a for=/>resolve</a> <var>promise</var>.
8676+
8677+
<li><p><a for=AbortSignal lt=add>Add the following abort steps</a> to <var>requestObject</var>'s
8678+
<a for=Request>signal</a>: <a for=list>remove</a> <var>deferredRecord</var> from
8679+
<var>request</var>'s <a for=request>client</a>'s <a for=fetch>fetch group</a>'s
8680+
<a for="fetch group">deferred fetch records</a>.
8681+
</ol>
8682+
8683+
85748684
<h3 id=garbage-collection>Garbage collection</h3>
85758685

85768686
<p>The user agent may <a for="fetch controller">terminate</a> an ongoing fetch if that termination
@@ -8627,117 +8737,6 @@ fetch("https://www.example.com/")
86278737

86288738

86298739

8630-
<h2 id=deferred-fetching>Deferred fetching</h2>
8631-
8632-
<p>Deferred fetches allow callers to request that a fetch is invoked at the latest possible moment,
8633-
when a <a>fetch group</a> is <a for="fetch group">terminated</a>, or after a timeout after it is
8634-
<a for="fetch group">deactivated</a>.
8635-
8636-
<h3 id="requesting-a-deferred-fetch">Requesting a deferred fetch</h3>
8637-
8638-
<div algorithm="request-a-deferred-fetch">
8639-
<p>To <dfn>request a deferred fetch</dfn> given a
8640-
<a for=/>request</a> <var>request</var> and a null-or-{{DOMHighResTimeStamp}}
8641-
<var>inactiveTimeout</var> (default null):
8642-
8643-
<ol>
8644-
<li><p>Assert: <var>request</var>'s <a for=request>client</a> is an
8645-
<a>environment settings object</a>.
8646-
8647-
<li>Let <var>totalScheduledDeferredBytesForOrigin</var> be 0.
8648-
8649-
<li>
8650-
<p>If <var>request</var>'s <a for=request>body</a> is not null then:
8651-
8652-
<ol>
8653-
<li><p>If <var>request</var>'s
8654-
<a for=request>body</a>'s <a for=body>length</a> is null, then throw a {{TypeError}}.
8655-
8656-
<li><p>Set <var>totalScheduledDeferredBytesForOrigin</var> to <var>request</var>'s
8657-
<a for=request>body</a>'s <a for=body>length</a>.
8658-
</ol>
8659-
</li>
8660-
8661-
<li><p><a for=list>For each</a> <a>deferred fetch record</a> <var>deferredRecord</var> in
8662-
<var>request</var>'s <a for=request>client</a>'s <a for=fetch>fetch group</a>'s
8663-
<a for="fetch group">deferred fetch records</a>: if <var>deferredRecord</var>'s
8664-
<a for="deferred fetch record">request</a>'s <a for=request>body</a> is not null and
8665-
<var>deferredRecord</var>'s <a for="deferred fetch record">request</a>'s <a for=request>URL</a>'s
8666-
<a for=url>origin</a> is <a>same origin</a> with <var>request</var>'s <a for=request>URL</a>'s
8667-
<a for=url>origin</a>, then increment <var>totalScheduledDeferredBytesForOrigin</var> by
8668-
<var>deferredRecord</var>'s <a for="deferred fetch record">request</a>'s <a for=request>body</a>'s
8669-
<a for=body>length</a>.
8670-
8671-
<li><p>If <var>totalScheduledDeferredBytesForOrigin</var> is greater than 64 kilobytes, then
8672-
throw a {{QuotaExceededError}}.
8673-
8674-
<li><p>Let <var>deferredRecord</var> be a new <a>deferred fetch record</a> whose
8675-
<a for="deferred fetch record">request</a> is <var>request</var>.
8676-
8677-
<li><p>Set <var>deferredRecord</var>'s <a for="deferred fetch record">inactive timeout</a> to
8678-
<var>inactiveTimeout</var>.
8679-
8680-
<li><p><a for=list>Append</a> <var>deferredRecord</var> to <var>request</var>'s
8681-
<a for=request>client</a>'s <a for=fetch>fetch group</a>'s
8682-
<a for="fetch group">deferred fetch records</a>.
8683-
8684-
<li><p>Return <var>deferredRecord</var>.
8685-
</ol>
8686-
</div>
8687-
8688-
<h3 id=request-deferred-fetch-method>RequestDeferredFetch method</h3>
8689-
8690-
<pre class=idl>
8691-
8692-
dictionary DeferredRequestInit : RequestInit {
8693-
DOMHighResTimeStamp? inactiveTimeout;
8694-
};
8695-
8696-
partial interface mixin WindowOrWorkerGlobalScope {
8697-
[NewObject] Promise&lt;Response> requestDeferredFetch(RequestInfo input, optional DeferredRequestInit init = {});
8698-
};
8699-
</pre>
8700-
8701-
<div algorithm="dom-requestdeferredfetch">
8702-
<p>The
8703-
<dfn id=dom-global-requestdeferredfetch method for=WindowOrWorkerGlobalScope><code>requestDeferredFetch(<var>input</var>, <var>init</var>)</code></dfn>
8704-
method steps are:
8705-
8706-
<ol>
8707-
<li><p>Let <var>promise</var> be a new promise.
8708-
8709-
<li><p>Let <var>requestObject</var> be the result of invoking the initial value of {{Request}} as
8710-
constructor with <var>input</var> and <var>init</var> as arguments. If that threw an exception,
8711-
<a for=/>reject</a> <var>promise</var> with that exception and return <var>promise</var>.
8712-
8713-
<li><p>If <var>requestObject</var>'s <a for=Request>signal</a> is <a for=AbortSignal>aborted</a>,
8714-
then <a for=/>reject</a> <var>promise</var> with <var>requestObject</var>'s
8715-
<a for=Request>signal</a>'s <a for=AbortSignal>abort reason</a> and return <var>promise</var>.
8716-
8717-
<li><p>Let <var>request</var> be <var>requestObject</var>'s <a for=Request>request</a>.
8718-
8719-
<li><p>Let <var>inactiveTimeout</var> be null.
8720-
8721-
<li><p>If <var>init</var> is given and <var>init</var>["<code>inactiveTimeout</code>"]
8722-
<a for=map>exists</a> then set <var>inactiveTimeout</var> to
8723-
<var>init</var>["<code>inactiveTimeout</code>"].
8724-
8725-
<li><p>If <var>inactiveTimeout</var> is not a {{DOMHighResTimeStamp}} then throw a {{TypeError}}.
8726-
8727-
<li><p>Let <var>deferredRecord</var> be the result of calling
8728-
<a>request a deferred fetch</a> given <var>request</var> and <var>inactiveTimeout</var>. If that
8729-
threw an exception, <a for=/>reject</a> <var>promise</var> with that exception and return
8730-
<var>promise</var>.
8731-
8732-
<li><p>Set <var>deferredRecord</var>'s <a for="deferred fetch record">invoke callback</a> to
8733-
<a for=/>resolve</a> <var>promise</var>.
8734-
8735-
<li><p><a for=AbortSignal lt=add>Add the following abort steps</a> to <var>requestObject</var>'s
8736-
<a for=Request>signal</a>: <a for=list>remove</a> <var>deferredRecord</var> from
8737-
<var>request</var>'s <a for=request>client</a>'s <a for=fetch>fetch group</a>'s
8738-
<a for="fetch group">deferred fetch records</a>.
8739-
</ol>
8740-
87418740
<h2 id=data-urls><code>data:</code> URLs</h2>
87428741

87438742
<p>For an informative description of <code>data:</code> URLs, see RFC 2397. This section replaces

0 commit comments

Comments
 (0)