为什么不像 XHR 中那样同步版本的异步 API?

我脑海中的想法是,所有的东西都是因为在运行时之外处理的东西。但我知道我可以同步发送请求。所以我对此提出了几个问题。WebAPIasyncJavaScriptXMLHttpRequest

API 是运行时的一部分吗?如果是这样,如何异步发送请求?为什么不将其他有用的API实现到Javascript本身,而不将它们公开为s?XMLHttpRequestJavascriptWebAPI

API 是 s 的一部分吗?那么,为什么没有其他同步 API 呢?为什么不是同步 API?XMLHttpRequestWebAPIsetTimeout


哈士奇WWW
浏览 92回答 1
1回答

慕丝7291255

XMLHttpRequest API是Javascript运行时的一部分吗?这取决于你所说的“JavaScript运行时”是什么意思。它们不是JavaScript标准库的一部分,不。它们是 Web 浏览器中主机提供的功能。XMLHttpRequest API 是 WebAPI 的一部分吗?是的,它是一个网络API。那么,为什么没有其他同步 API 呢?有。例如,几乎所有的DOM操作都是同步的。但是,需要花费大量时间(如网络请求)并从主UI线程(默认情况下JavaScript在浏览器中运行的地方)启动的事情最好异步完成,以避免阻塞该线程并阻止UI更新。因此,默认情况下,异步(并且使用标志使其同步已被弃用),始终是异步的,并且可能需要时间的各种其他操作是异步的。XMLHttpRequestfetch在现代环境中,¹ 使用异步 API 与使用同步 API 一样简单,这要归功于以下功能:asyncasync function showMoreData() {    const response = await fetch("/more/data/please");    if (!response.ok) {        throw new Error("HTTP error " + response.status);    }    const data = await response.json();    for (const entry of data) {         // ...do something...    }}¹ “现代环境” - 现在大多数浏览器都支持本机功能,如果您必须以IE11或其他过时的浏览器为目标(可悲的是,我们中的许多人都这样做!),您可以使用像Babel这样的工具将现代代码转换为将在这些环境中运行的旧代码。你写最新的东西,他们把它变成IE11可以理解的东西。async
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript