我有一个要发出请求,并检查该请求是否是成功的一些代码,但它不关心响应正文:
async function doTheThing() {
const response = await fetch(someUrl, { method: 'POST' });
if (!response.ok) {
throw new Error(`Request failed with status ${response.status}`);
}
}
据我了解,响应身体还没有在这一点上下载。如果我们把它挂和不喜欢的东西跟进:
const body = await response.json();
......将请求/响应保持开放,并等到也许GC发生?如果是这样,是有办法忽略干净响应流的其余部分,而不会造成问题?
将请求/响应保持开放,并等到也许GC发生?
总之,没有。
const body = await response.json();
指示等待你的代码直到响应体被下载,它不会引发身体下载。除非有一个理由不,响应体流将下载内容,然后关闭。
你可以阅读有关在fetch spec过程。
这是可能中止已经启动后,读取请求,但不建议这样做,由于与浏览器的支持问题。见How do I cancel an HTTP fetch() request?
你可以做一个HEAD
如果它没有成为一个POST
,你只是要检查,如果你会收到一个400
或500
一系列错误
https://developers.google.com/web/ilt/pwa/working-with-the-fetch-api#example_head_requests
例如:HEAD请求通过默认获取使用GET方法,以检索一个特定资源,但也可使用其它的请求HTTP方法。
HEAD请求就像GET请求,除了响应主体是空的。当所有你想要的文件的元数据可以使用这种要求,并且希望或者需要的文件的数据运输。
如果你被卡住一个POST
请求时,它控制在服务器端,您将收到任何服务器返回的,没有它指明您可以告诉服务器无法发送任何的网络标准,因此服务器都必须明确地写入允许这种行为。
如果你不小心,一旦你退出这个特定的范围,不再需要response
GC将自生自灭。你并不需要await
它或任何东西,但它会在后台(保存在内存中),然后扔掉GC运行时下载。