Какой?
Каналы – подобные очереди, как объекты (Первое в первую очередь) что их enqueue
(Отправить) и Dequeue
(Get) Функции асинхронные ( async
). Передавая их между асинхронными функциями, мы можем синхронизировать операции между указанными функциями.
Почему?
Допустим, мы хотим обработать большой кусок данных (Имитация несколькими параграфами LOREM-IPSUM) . Некоторые из процессов, которые мы хотим выполнять на этих данных, являются быстрыми, в то время как другие – это потребление времени (и ресурсов). Чтобы избежать подавляющей нашей инфраструктуры, мы хотим, чтобы не отправлять данные в процесс, который не готов принять новые данные. Другими словами, мы хотим реализовать заднее давление Отказ Это где Async-каналы вступают в игру.
Когда ты Отправить
(или Получить
) сообщение (или из) канала, он возвращает обещание. Для Отправить
Запросы, это разрешит, если канал имеет доступный буфер или (если нет), после A Получить
выполняется на канале. И на противоположной стороне, а Получить
Запрос будет разрешаться, если на канале появится буферическое сообщение или после Отправить
Запрос сделан.
Как?
Ниже приведен пример использования async_channels Где длинные процессы моделируются по телефону спать
(Функция помощника, которая возвращает обещание, которое разрешено после n
секунды).
Эйл-Шалев/async_channels.
Вдохновленный каналами Go & Clojure, Async_channels предоставляет каналы как асинхронный метод связи между асинхронными функциями.
Оригинал: “https://dev.to/eyalshalev/introducing-async-channels-333n”