Sergey
закешировал?
Sparrow
оно кэшируется где-то не там, где обычно, и потом поменять то, что закэшировалось, как-то нетривиально
Sparrow
не помню уже подробностей, запомнил только, что favicon менять геморно в браузере
Sparrow
ну в хроме по крайней мере
Sparrow
погугли или просто проверь с другого браузера и забей. само обновится.
Sergey
погугли
Sparrow
это большая сила должна быть. 15 MN как минимум
Alexander
Мне нужно пройтись по массиву, и для каждого элемента я вызываю асинхронный реквест, после чего модифицирую элемент массива. Как сделать, что бы цикл for подождал каждого ответа функции?
Vlad
наверное рекурсивную функцию
Sparrow
не очень понятно зачем ждать
Sparrow
или зачем асинк тогда
Sergey
async function doit(list) { for (const item of list) { const result = await getRequest(item) } }
Sergey
цикл может быть любым (`for (let i = 1; ; )` или while )
Alexander
Понял. Только await можно применить к функции, которая возвращает promise, верно? А мой getRequest() на колбэках. Значит сначала промисифицирую функцию.
EarL
ок, такой вопрос как домен прописать ноде?
EarL
ну точней на тачке работает еще апач и надо чтобы было перенаправление на ноду при обращении к определенным доменам
EarL
без порта
Cenator 🐈
Alexander
async function doit(list) { for (const item of list) { const result = await getRequest(item) } }
Вопрос вот по этой логике. При использовании await - следующая итерация не начнётся, пока не придёт response, верно? А если вместо await вешать на getRequest.then(), то все итерации отработают сразу же, а только потом начнут работать обработчики в then, когда придут ответы? Или же разницы никакой нет?
сomorsiс
нет разницы
сomorsiс
хочешь параллельно - используй .all
сomorsiс
это и так основной поток
сomorsiс
какого именно?
сomorsiс
функция вернет промис который тоже можно await-ить
Фεδως
async/await — это промисы, только ты делаешь вид что у тебя синхронный код
Фεδως
http://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/ статейка по теме
Cenator 🐈
let a promise().then(resp=> { a = response } console.log(a)
Cenator 🐈
Vs
Cenator 🐈
const a = await promise() console.log(a)
Cenator 🐈
Ну и что консоль лог напечатает?
Фεδως
ещё был прикол с отловом ошибок, если не ошибаюсь
Cenator 🐈
Давай без проверки только
сomorsiс
ну так то колбеки тоже отличаются от промисов только синтаксисом
Дима
Неа
Фεδως
Cenator 🐈
Промис это монада
Cenator 🐈
promise().then(a => console.log(a))
А мне надо достать переменную из скоупа
Cenator 🐈
А теперь проверь))))))))))))))
Cenator 🐈
Зато выглядит нормально
Alexander
не понял
Мне показалось, что есть разница в логике выполнения c await и then, но выше люди объяснили что всё будет одинаково.
Sergey
разница есть
Sergey
ибо следующая итерация не начнется пока не зарезолвится промис (это с await)
Sergey
а с then все итерации выполнятся по очереди а промисы уже позже
Alexander
О, вот и я об этом же. Таким образом выходит, что then быстрее в этом случае, так как все реквесты полетят друг за другом параллельно, верно?
Sergey
ну не быстрее
Sergey
иногда можно только поочереди
Alexander
При await мне нужно ждать пока будет совершать запрос, потом обработка ответа и снова запрос. Если каждый запрос-ответ занимает секунду, то при десяти итерациях - потрачу десять секунд. При then - запросы полетят сразу же все.
Max
Привет. Не подскажите, как можно красиво использовать локальную "либу"? Полный кейс: написал мини-библиотеку для работы с бд-шкой, в которой описаны схемы, настройка конекшена и експортятся модели. И эту либу я хочу рекваерить с нескольких микросервисов (громкосказано конечно). Как это делается на практике?
Дима
Нормально делай — нормально будет
Дима
У нас было 2 мешка промисов, 75 пачек калбэков, три марки с фьючерсами и полсолонки async/await
Sergey
нет есть кейсы которые можно решить только промисами а есть которые НАМНОГО проще решить async/await
Sergey
async/await можно дебажить нормально нежели промисы
Sergey
да промисы паралелльно могут async/await это именно (псевдо)синхронщина
Dmytro
Можно кейс когда нельзя сделать без промисов?
Pauline
бывает, где промисами как минимум проще
Sergey
внутри then не поставишь breakpoint
Dmytro
debugger напишешь))
Mykola
Вот тут хороший холивар по этому вопросу https://habrahabr.ru/company/ruvds/blog/326074/
Maksim
Может кто поделиться опытом хранения данных? Как лучше сохранять(какая структура должна быть) чтобы можно было легко вытаскивать данные за нужный промежуток времени? На данный момент у меня просто массив объектов, в которых ключ date со значением даты. Но по-моему это не очень удобный способ, вечно нужно будет пробегаться по всем объектам и сравнивать дату чтобы вытащить лишь объекты с нужным промежутком времени.
Nikita
А если объем данных большой, то само собой бд
Nikita
Где все оптимизации уже будут за тебя сделаны
Sergey
есть кейсы которые именно не решаются await Promise.all[... этот самый кейс который по другому никак не вижу особо смысла спорить с коллегами как правильно — как меньше кода получается (при одинаковой реализации) так и писать
Nikita
Само собой бегать через for in или for i пока найдешь нужный - такая себе идея
zamir
привет! установил 9 версию ноды что бы по юзать import, потом понял что надо включить специальный флаг. вы уже использовали? нету ошибок? с учетом того что я не прфи в ноде ) просто пишу простой бэкенд и хотел и на бэке и на фронте писать через import
Cenator 🐈
Флаг пока не стоит врубать
Cenator 🐈
Как минимум из-за мерзких mjs
zamir
спасибо👌
Nikita
/** * Find items with properties matching those on query. * * @param {ItemQuery} query Query to match * @param {function(ItemList)} callback Called when the query is done * * @example * db.find({completed: true}, data => { * // data shall contain items whose completed properties are true * }) */
Nikita
подскажите как называется эта конструкция?