Являются ли API XMLHttpRequest частью Javascript среды выполнения?
Это зависит от того, что вы подразумеваете под «JavaScript время выполнения». Они не являются частью стандартной библиотеки JavaScript, нет. Они предоставляются хостом в веб-браузерах.
Являются ли API XMLHttpRequest частью WebAPI?
Да, это веб-API.
Тогда почему нет других синхронных API?
Есть. Например, почти все операции DOM синхронны. Но вещи, которые потребуют значительного количества времени (например, сетевые запросы) и инициируются из основного потока пользовательского интерфейса (где JavaScript запускается в браузерах по умолчанию), лучше всего выполнять асинхронно, чтобы избежать блокировки этого потока и предотвращения обновлений пользовательского интерфейса. . Таким образом, XMLHttpRequest
по умолчанию является асинхронным c (и использование флага для синхронизации становится устаревшим), fetch
всегда является асинхронным c, а различные другие операции, которые могут занять время, являются асинхронными.
В современной среде ¹ использовать asyn c 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...
}
}
¹ «современные среды» - большинство браузеров поддержка async
теперь работает изначально, и если вам нужно настроить таргетинг на IE11 или другие устаревшие браузеры (что, к сожалению, многие из нас делают!), вы можете использовать такие инструменты, как Babel, для преобразования вашего современного кода в старый код, который будет работать в этих средах. Вы пишете актуальную информацию, они превращают ее в то, что может понять IE11.