Size: a a a

Clojure — русскоговорящее сообщество

2020 November 05

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Mikhail Borisov
user = await getUser();
posts = await getPosts(user);
post_comments = await Promise.all(posts.map(post => getPostComments(post)))
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Sergey Trofimov
блин, ну вы на ходу переобуваетесь 😊
(let [a (future 1)
     b (future 2)]
 (future (+ @a @b)))
ну не, никто не переобувается, это await так работает
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Окей, это наверное норм, хотя тоже плохо, что заблокируем один из потоков, в котором фьючеры крутятся
всякая асинхронная семантика подразумевает на низком уровне какие-то потоки и прочее
и геморрой начинается, когда тебе нужен контроль над процессом, а оно всё покрыто сахаром и ручек для управления не приделали 😊
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Alex Bubnov
ну не, никто не переобувается, это await так работает
Добавлю к этому пояснение. В js реально один поток, await это неблокирующая операция (в отличии от джавовского Future.get() ). async/await это просто синтаксический сахар над Promise.then
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Alex Bubnov
ну не, никто не переобувается, это await так работает
про семантику await в первоначальном вопросе ни слова не было
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Ну мы же практичные люди, хотим и код красиво написать и не получить дедлок в трэдпуле?
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Mikhail Borisov
user = await getUser();
posts = await getPosts(user);
post_comments = await Promise.all(posts.map(post => getPostComments(post)))
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Видимо manifold это мастхэв либа все-таки :) Я пока только про стримы оттуда видел, не думал, что и за фьючерами туда нужно идти
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Вот если мне за что и нравится джс, то это за async/await
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Видимо manifold это мастхэв либа все-таки :) Я пока только про стримы оттуда видел, не думал, что и за фьючерами туда нужно идти
это была ссылка про cats, а не про манифолд
у них и для асинхронных каналов есть
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Вот если мне за что и нравится джс, то это за async/await
async-await - это костыли для убогих рантаймов
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Alex Bubnov
async-await - это костыли для убогих рантаймов
На этот счет я до конца не сложил мнение
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Котлиновский вариант еще больше нравится конечно
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Вот если мне за что и нравится джс, то это за async/await
ничего же не мешает ими в clojurescrip пользоваться
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
ничего же не мешает ими в clojurescrip пользоваться
а так deref тот же await
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
а так deref тот же await
а не, соврал, сорри
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
а так deref тот же await
В cljs возможно, в clj нет
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Mikhail Borisov
На этот счет я до конца не сложил мнение
в нормальном рантайме есть либо эффекты/continuations, либо хотя бы гринтреды без раскраски функций
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Alex Bubnov
в нормальном рантайме есть либо эффекты/continuations, либо хотя бы гринтреды без раскраски функций
Как выглядят continuations в коде?
источник