Anatoliy Skuratov
А почему ты не резолвишь промисы в readyData через Promise.all??
파쇼크
Anonymous
anoru
@rmnff https://stackoverflow.com/questions/37576685/using-async-await-with-a-foreach-loop прочти популярный ответ
arts
const promises = [
() => new Promise(...),
() => new Promise(...),
...
];
function next(i = 0) {
promises[i]().then(() => next(i + 1));
}
next();
Можно так, например.
파쇼크
Жуть какая
Sergey
arts
А в гит за него не запушить? :-) я показал направление
Andrew Kiselev
часто ли на ноде пишут с использованием функций генераторов? Я чет помучился с промисами и перешел на них
Sergey
Sergey
Sergey
это как раз таки намного проще генераторов
Sergey
выглядит абсолютно синхъронно
Sergey
(бля, отвечайте на сообщение, не пойму в каком треде участвую)
Andrew Kiselev
)))
Andrew Kiselev
arts
Так в этом и задача была. Читай выше
Sergey
Sergey
вот да
Sergey
они вообще не для этого
Andrew Kiselev
Sergey
для генерации?)))
Sergey
для ленивых вычислений
Sergey
хотя не могу придумать кейс для генераторов, когда есть промисы
Sergey
вот вообще
Andrew Kiselev
зачем-то же их решили добавить в js?
Evgeny
Фибоначчи пока не надоест
Sergey
Sergey
но промисы и асинки решают управление
Vladimir
Генераторы в основном существуют именно для корутин
Vladimir
Другие кейсы их использовния гораздо реже
Sergey
да как-то... хз
Sergey
ни разу не видел эффективного их использования
Sergey
та же koa, ушла от генераторов к асинкам
Vladimir
Теперь когда есть асинки - да
Vladimir
Но например на генераторах можно сделать отмену корутины
Vladimir
Если кому надо
Andrew Kiselev
библиотека redux-saga полностью построена на генераторах, предполагается что писать тесты проще
Sergey
а без библиотек, можно на генераторах что-то полезное написать?
Andrew Kiselev
хз, пытаюсь вспомнить
Sergey
сейчас гуглю, ничего не нахожу
Дима
Я на асинхронных генераторах писал реализацию сильно разветвленного алгоритма, в котором требовался постоянный обмен данными между корутинами
Sergey
Andrew Kiselev
одно видео нашел https://www.youtube.com/watch?v=lil4YCCXRYc
еще одно было где-то в закладках
Дима
Vladimir
Ну на асинках то такое тоже можно сделать
Vladimir
Вот пример с сагой хороший
Дима
Да в принципе много вариантов, но async генераторы там смотрелись логичнее всего — многоступенчатый процесс с циклами , отменами и возвратами, распределенный между несколькими корутинами, каждая имеет довольно приличное количество входов и выходов, с логическими развилками в зависимости от результата.
Переписал просто async функции на них когда надоело в каждую атомарную функцию заново прокидывать контекст
Если бы можно было при этом делать yield* то было бы ещё проще
Дима
Ну короче что то типа саги, да, только без либ
Andrew Kiselev
интересный опыт.
Я просто постоянно работаю с сагой, поэтому в ноду решил запихать ‘co’ и везде писать yield. Плюс в mongoose примеры через yield
Anonymous
как это возможно?
this.deleteTrade = (tradeID) => {
return new Promise((resolve, reject) => {
MongoClient.connect(this.url, (err, db) => {
if(err || db == null) {
reject('Failed to connect to DB. Try again later');
}
db.collection('trades', {}, (err, trades) => {
trades.remove({
_id: tradeID
}, (err, result) => {
if(err) {
reject(err);
}
resolve(result);
});
});
db.close();
});
});
}
выдает ругань на строчку db.collection('trades', {}, (err, trades) => {
вот такую:
TypeError: Cannot read property 'collection' of null
Anonymous
ааа
Anonymous
ну я и тупой ^_^
Evgeny
Если не передавать туда коллбек - он вернет промис
Denis
Если не передавать туда коллбек - он вернет промис
Если mongoose то он возвращает query объект который тоже имеет then метод, но это не промис. Чтобы вернуть промис надо .exec() дописать, а ещё по хорошему забиндить нативные/блюберд промисы(там вроде встроенные mPromise и они deprecated)
Evgeny
Я про монгоклиент
Denis
А, чёт не увидел что вопрос про монгоклиент
Denis
Сорян
Andrew Kiselev
Denis
Я нативные использую
Denis
С другими правда не работал, здесь писали что блюберд лучше по скорости
Denis
Ага
Andrew Kiselev
Спасибо. Не помню почему, у меня продолжал показывать предупреждение про deprecated :(
Таймураз
Кстати, да
Я использую mongoose, сразу после инициализации добавляю промисы bluebird, однако все равно ошибка валится
Таймураз
Как отследить первый вызов require?
Anonymous
Йо. Можете объяснить, что означает здесь слово децентрализация? То есть данные хранятся на клиентах, а сервер только аккаунты хранит или как? https://mastodon.social
Anonymous
Интересно, как организован поиск по таким серверам. Если мне например нужно найти конкретное id, а оно может быть на любом из десятков серверов.
Андрей
есть у кого на примете нормальный excel pasrser?
yarastqt [msk +1 week]
JWT, oauth2
Denis
(сейчас опять кто-то напишет какой JWT плохой)
Denis
Sergey
Такая же как везде ) прочитай просто об аутентификации для начала
Aleksand
даже без всех эти размашистых доводов, можно просто без кук поработать с закрытыми авторизацией ссылками и потом смело всю жизнь использовать для сессий куки и не придумывать. а учитывая что куки самое защищенное хранилище при должном подходе то вообще непонятно для чего все остальное
Kons
Я в данный момент делаю апи для мобильного приложения. В JWT держу айди пользователя и массив его ролей. Благодаря этому мне не нужно обращаться к базе при каждом запросе, чтобы узнать, может ли юзер выполнить то, или иное действие. Кроме того, мобильникам не нужно парсить/собирать куки у себя. В реактовой админке тоже будет аутентификация с JWT, что позволит апишку повесить на домене api.*.
Таймураз