Skip to content

Commit 7401252

Browse files
committed
Move sections around
1 parent cce5869 commit 7401252

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
@@ -6721,6 +6721,62 @@ agent's <a>CORS-preflight cache</a> for which there is a <a>cache entry match</a
67216721
</ol>
67226722
</div>
67236723

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

67256781

67266782
<h2 id=fetch-api>Fetch API</h2>
@@ -8435,7 +8491,7 @@ otherwise false.
84358491
</div>
84368492

84378493

8438-
<h3 id=fetch-method>Fetch method</h3>
8494+
<h2 id=fetch-method>Fetch methods</h2>
84398495

84408496
<pre class=idl>
84418497
partial interface mixin WindowOrWorkerGlobalScope {
@@ -8575,6 +8631,60 @@ with a <var>promise</var>, <var>request</var>, <var>responseObject</var>, and an
85758631
</div>
85768632

85778633

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

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

86328742

86338743

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

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

0 commit comments

Comments
 (0)