亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么不像 XHR 中那樣同步版本的異步 API?

為什么不像 XHR 中那樣同步版本的異步 API?

哈士奇WWW 2022-09-02 17:15:05
我腦海中的想法是,所有的東西都是因為在運行時之外處理的東西。但我知道我可以同步發送請求。所以我對此提出了幾個問題。WebAPIasyncJavaScriptXMLHttpRequestAPI 是運行時的一部分嗎?如果是這樣,如何異步發送請求?為什么不將其他有用的API實現到Javascript本身,而不將它們公開為s?XMLHttpRequestJavascriptWebAPIAPI 是 s 的一部分嗎?那么,為什么沒有其他同步 API 呢?為什么不是同步 API?XMLHttpRequestWebAPIsetTimeout
查看完整描述

1 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

XMLHttpRequest API是Javascript運行時的一部分嗎?

這取決于你所說的“JavaScript運行時”是什么意思。它們不是JavaScript標準庫的一部分,不。它們是 Web 瀏覽器中主機提供的功能。

XMLHttpRequest API 是 WebAPI 的一部分嗎?

是的,它是一個網絡API。

那么,為什么沒有其他同步 API 呢?

有。例如,幾乎所有的DOM操作都是同步的。但是,需要花費大量時間(如網絡請求)并從主UI線程(默認情況下JavaScript在瀏覽器中運行的地方)啟動的事情最好異步完成,以避免阻塞該線程并阻止UI更新。因此,默認情況下,異步(并且使用標志使其同步已被棄用),始終是異步的,并且可能需要時間的各種其他操作是異步的。XMLHttpRequestfetch

在現代環境中,1 使用異步 API 與使用同步 API 一樣簡單,這要歸功于以下功能:async

async 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...

    }

}

1 “現代環境” - 現在大多數瀏覽器都支持本機功能,如果您必須以IE11或其他過時的瀏覽器為目標(可悲的是,我們中的許多人都這樣做!),您可以使用像Babel這樣的工具將現代代碼轉換為將在這些環境中運行的舊代碼。你寫最新的東西,他們把它變成IE11可以理解的東西。async


查看完整回答
反對 回復 2022-09-02
  • 1 回答
  • 0 關注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號