Алексей
ааа, как же меня радует асинхронность javascripta :)))
Алексей
const getOutput = async (elem) => {
await bot.sendMessage(chatId, elem.date);
await bot.sendMessage(chatId, elem.title);
}
Алексей
я же правильно понимаю, что сначала первая функция должна выполниться, а вторая должна запуститься, когда первая выполнится?
сomorsiс
да
Алексей
перебираю массив объектов, для каждого объекта применяю данную функцию...
Sergey
как перебираешь
Алексей
...т.е. должен получиться такой вывод:
дата
название
дата
название
дата
название и т.д
Sergey
не обязательно
Алексей
Sergey
делаешь там await getOutput( ?
Алексей
неа
Sergey
а надо
сomorsiс
forEach
замени на обычный фор и await-ов
Алексей
а надо
а async перед forEach ставить что-ли? :)
сomorsiс
либо есть вариант сделать через reduce с промисами
Sergey
Sergey
только for (of/in)
Алексей
такая же фигня...вывод вот так:
дата
дата
название
название
Алексей
какие еще версии? :)
Анатолий
Да и вообще по сути зачем тебе ждать именно очереди? пусть себе одновременно и выполняются, главное что у тебя внутренние сообщение точно в порядке будут выполняться
Анатолий
Это ж быстрей будет
Nikolay
Это ж быстрей будет
Ага, и еще обработку ошибок добавить, и все это на асинках 😁 а потом код скинь почитать
Алексей
пффф, жесть какая то :))
Анатолий
А что такого в обработке ошибок?
Анатолий
records.forEach((item: IVideoStatus) => {
doSingleJob(item)
.then(() => {
})
.catch((error) => {
});
});
Внезапно с обработкой ошибок, а внутри doSingleJob спокойно используем асинки
Анатолий
И выполняются одновременно все таски, а внутри каждой все действия выполняются поочереди
Nikolay
Не, ну это грамотно. Часто начинают лапшу на асинках городить.
Nikolay
Декомпозиция наше всё.
Nikolay
Потом появляются вложенные трай-кетчи и т.д. :))
Анатолий
😃 я использую вложеные трей-кетч, но это уже другая история
Nikolay
Nikolay
Хотя и не такой адовый ад, как вложенные тернарники :))
Анатолий
Для разпределения ошибок, не обязательно пользователю знать что у меня отвалилась бд, или запрос к апи сбоит, такие ошибки я отлавливаю отдельно, логирую и заменяю текст на человекочитаемый, и обязательно есть внешний трай который в принципе ловит ошибки, включая мои замененные
Анатолий
по сути вложеный трай
Nikolay
Ну я о том, что в принципе любые вложенные блоки диковато смотрятся. Если на функции разносить, то наверное норм.
Анатолий
Ну вообще да, диковато
Алексей
народ я так и не допонял, чего делать то? :)
Анатолий
оставляй как есть
Анатолий
Это нормальное поведение
Анатолий
Анлес тебе кровь из носа нужно чтоб все ОБЯЗАТЕЛЬНО выполнялись строго друг за другом
Алексей
какое нормальное то???
Анатолий
у тебя все пары выполняются одновременно, но внутри каждая пара выполняется строго друг за другом
Алексей
мне нужно чтобы сообщения из объекта выводились в определенной последовательности
Vladimir
Анатолий
куда выводились, это лог просто?
Анатолий
Или это для пользователей?
Анатолий
Используй фор
Анатолий
И будет тебе счастье
Алексей
у меня в массив объекты, каждый объект это расписание мероприятия (дата, название, ведущий и т.д.)
Алексей
я сортирую мероприятия по городу и вывожу список мероприятий
Алексей
ну это все подробности
Анатолий
а асинк зачем?
Алексей
https://pastebin.com/0wvNV8Yu
Алексей
вот выдержки из кода
Алексей
а асинк зачем?
ну как зачем то? есть функция, которая выводит значения определенных полей объекта в определенной последовательности
Анатолий
for ( item of array) { await (item) => await getOutput(item) };
Анатолий
и дальше вглубь всем авейт
сomorsiс
resp.reduce((promise, element) => promise.then(() => getOutput(element)), Promise.resolve())
Алексей
я перебираю массив из этих объектов и каждый объект как аргумент в функцию
Анатолий
да
Анатолий
for ( item of array) { await getOutput(item) };
Анатолий
опечатка была
Anonymous
keystone для админки, есть альтернативы?
Anonymous
С учетом что на фронте реакт хотелось бы
Cenator 🐈
antd pro
Anonymous
Много чего на китайском... А там бекенд тоже есть?
Cenator 🐈
а, понял, это другой чат)
Alexander
Eugene
Всем привет
Прикручиваю ЛДАП к перьям, натолкнулся на ошибку Authentication strategy 'ldap' is not registered.где ее регистрировать?
Спасибо
Eugene
нашел жсон конфиг, с локальной стратегией, возможно туда, но не ясно, что нужно писать, примеров не нашел
Alexander
А для авторизаций что используют чаще всего? Passport? Пока его начал изучать, но может есть ещё варианты.
Дмитрий
Alexander
Дмитрий
Проще самому провайдера реализовать
Дмитрий
Простая фабрика
Eugene