Size: a a a

JavaScript.Ninja

2021 June 04

RM

Roman Mironov in JavaScript.Ninja
меня просто удивило то, что мы уже какб ждлем результат и там возвращается данные з промиса - ну я смело и написал)
источник

VK

Vladimir Klimov in JavaScript.Ninja
Я точно знаю, что так можно
У меня вопрос как эффективнее, но я не понимаю как работают генераторы в смысле async/await
источник

DZ

D Z in JavaScript.Ninja
Засунь в playground babel-я небольшую async/await функциюю
источник

RM

Roman Mironov in JavaScript.Ninja
я вот так и убедился в том, что был неправ)
источник

D

Dimitrii in JavaScript.Ninja
Кто-нибудь использует в проде какую-нибудь библиотеку для так называемых контрактов, вроде iо-ts или runtypes?
источник

IK

Illya Klymov in JavaScript.Ninja
Конечно
источник

VL

Vova Levchenko in JavaScript.Ninja
await же вроде не работает в мап
источник

DZ

D Z in JavaScript.Ninja
Почему это?
источник

D

Dimitrii in JavaScript.Ninja
Async функция возвращает промис.
источник

D

Dimitrii in JavaScript.Ninja
Всегда
источник

AS

Alexey Shultsev in JavaScript.Ninja
функцию, которая возвращает промис я вынес бы в отдельную, и ее бы передавал в map.
и там не await будет работать в map, здесь идет преобразование массива данных в массив промисов.
и дальше уже как раз await распаковывает данные из промиса и вернет в респонс массив.
источник

VL

Vova Levchenko in JavaScript.Ninja
я понял, я писал о том что вернется массив промисов и не увидел у него Promise.all
источник

VK

Vladimir Klimov in JavaScript.Ninja
Вы можете объяснить как развернется вся эта конструкция с вложенными async/await?
Влияет ли это на эффективность по сравнению с ситуацией, если бы мы не делали await внутри мап
источник

VL

Vova Levchenko in JavaScript.Ninja
а мы бы не смогли сделать await без async
источник

VL

Vova Levchenko in JavaScript.Ninja
или я не правильно понял
источник

AS

Alexey Shultsev in JavaScript.Ninja
если не делать await - как распаковать результат резолва промиса?
источник

AS

Alexey Shultsev in JavaScript.Ninja
тогда только чейнинг делать через then
источник

VK

Vladimir Klimov in JavaScript.Ninja
await Promise.all
А потом уже сделать синхронный мап
источник

D

Dimitrii in JavaScript.Ninja
Пишу тудушницу.
БД это json файл. При старте node.js приложения файл загружается в память целиком и лежит там как типизированный тайпскриптом объект, то есть десереализуется, а для этого я написал type guard который параметром честно принимает unknown. И вот акуратно написать руками этот гвард заняло у меня минут 15.
А зачем что-то 15 минут делать руками, если можно два дня автоматизировать?

Перепробовал я io-ts, который базируется на fp-ts, а для второго надо монады знать, и несколько иначе писать приложение (или нет, но я не нашел быстро нужных утильных функций). Попробовал runtypes, но почему-то компилятор с линтером люто ругаются что все с библиотеки это Any (может WebStorm виноват). Попробовал zod либу, но у неё нету возможности задавать номинативные типы.
И в итоге все эти либы делают не красивый вывод типов для ТС
runtypes.Static, t.typeOf

Илья, какую библиотеку для контрактов вы используете? Можно-ли где-то глянуть как вы с ней работаете?
источник

VK

Vladimir Klimov in JavaScript.Ninja
https://t.me/javascript_ninja/176420

Тут будут вложенные промисы, или нет?
источник