Kozack
@Kozack
Thinking about a11y

Правильно ли я понимаю асинхронные сетевые запросы?

const promise = getResource() // Обращение к серверу которое занимает ровно одну секунду

// Синхронные операции на выполнение которых уходит ровно одна секунда

await promise // На данный момент сетевой запрос уже выполнен, И просто ожидает пока я его "запрошу"?
  • Вопрос задан
  • 235 просмотров
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
Нет, не совсем так.

// getResource() это должна быть некая функчия, которая делает асинхронный запрос к серверу и возвращает thenable объект:
// раз - https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve
// два - https://ru.stackoverflow.com/questions/877248/%D0%A7%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-thenable-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82


// тут мы запрашиваем обращаемся к серверу, при этом запрос может быть выполнен как очень быстро так и очень медленно а так же он может быть вообще не выполнен (зависит от загруженности сети, состояния и загруженности сервера)
const promise = getResource()

// тут мы конечно можем делать синхронные операции,но так как они синхронные,  то пока они не отработают выполнение кода дальше не двинется.

// тут мы просто говорим, что ждем пока сделанный запрос на сервер не вернет данные  код, находящийся далее не исполнять. Начнет его исполнять только после получения данных, сколько бы запрос к серверу не длился (в разумных пределах конечно. Существуют различные таймауты на установку соединения, на ожидание ответа и т.д.). При этом пока исполнение кода в данном блоке находится как бы на паузе, интерпретатор может выполнять другие задачи имеющиеся в eventloop. Таким образом достигается стиль написания кода, похожий на синхронный но являющийся асинхронным.
await promise
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы