Каналы поверх обещаний. Почему и как использовать?

#asynchronous #promise #service-worker #clojurescript #channel

#асинхронный #обещание #service-worker #clojurescript #канал

Вопрос:

Признаюсь, я еще не изучал core.async . Т.е. я не знаю, как clojure работает асинхронно, но я знаю, что в основном используются каналы. Я работаю в основном в clojurescript и собираюсь начать писать service worker.

Я нашел эту библиотеку для записи обещаний в виде каналов, но, похоже, что без использования библиотеки не так уж много работы.

Итак, должен ли я использовать каналы вместо обещаний в любой ситуации?

Существует ли простое преобразование из обещаний в core.async использование каналов?

Комментарии:

1. Есть ли у кого-нибудь параллельный пример чего-либо, реализованного с использованием js promises, и того же, что реализовано с использованием каналов?

Ответ №1:

Если вы посмотрите на исходный rational для core.async, становится понятнее, что у него есть преимущества перед использованием другого потока, такого как с future . ClojureScript был одним из основных драйверов, поскольку он однопоточный и других вариантов нет.

Некоторые ресурсы:

Комментарии:

1. Пожалуйста, избегайте ответов только по ссылкам. Полезно подкреплять ответы ссылками, но, пожалуйста, напишите в самом сообщении, что эти ресурсы утверждают о каналах против обещаний.