Sergey
и если сейчас не поставишь себе имя я тебя забаню
Ivan
Ivan
Ivan
Я посмотрел на устройство модулей и уже разобрался, сейчас кину пару скринов.
Ivan
Это весь модуль http, т.е. там просто в отдельные файлы вынесено.
Sergey
Sergey
но опять, же, скорее всего, чтобы не заставлять юзать new
Иван
Всем привет. Возможно глупый вопрос но всетаки задам . Есть функция которая дергает поиск в Nedb . по всей видимости поиск асинхронный. Каким макаром получить результат выполнения поиска в основном коде ?
Иван
Пример
select_db = function (id) {
second= db.find({id: id});
return second
};
сomorsiс
сделай чтобы функция была async/ верни промис
Cenator 🐈
Promise/async/await
Иван
и отловить в then ?
Иван
В питоне все намного проще )))
Cenator 🐈
A
вопрос, есть приложение koa, отдаёт статику (assets) и срендереный реакт. При этом при попытке перейти по урлу в браузере, вместо того чтобы сработал react-router, работает серверный роут. Как преодолеть?
A
нагуглил только совет отдавать статику c nginx
Cenator 🐈
Cenator 🐈
Но статику лучше через nginx отдавать
A
https://gist.github.com/alextorn/255013f01109407ad8d1e070aa1569eb
A
вот мой пример
A
при попытке в браузере кликнуть на линку реакт-роутера, срабатывает staticMiddleware() и ищет, например, blog в папке с ассетами
A
типа вот так: { Error: ENOENT: no such file or directory, stat '/Users/AlexanderTorn/Sites/bs/build/blog'
Cenator 🐈
A
спасибо кэп) чо делать?
Cenator 🐈
A
окей. задам вопрос по другому, как люди отдают ассеты с севера? кроме варианта с nginx
Cenator 🐈
koa-static вроде
Cenator 🐈
У меня работает
Sergey
Чтобы не менять по всему проекту new Server на new SuperServer когда класс поменяется
Sergey
Почитай про фабричный метод
A
Иван
солушайте . а есть у вас пример обработки массива через промис функции . но чтобы все елементы массива обрабатывались по очереди ?
сomorsiс
ты с чистыми промисами или bluebird?
Иван
чистыми
сomorsiс
с чистыми for(....) { await do_smth()}
сomorsiс
только не форич а именно фор
Иван
работать будет от седьмой ноды насколько понимаю ?
Sergey
сomorsiс
есть еще один вариант, но его больно читать
Иван
а воообще вот мне одно непонятно . Если мне хочется и нужно обработать несколько связных запросов . Например 10 . То в питоне достаточно дергать функцию получать данные и идти дальше . В яваскрипте приходится гирлянду промисов писать . Насколько понимаю специфика языка просто не предусматривает что то выполнят синхронно ?
Sergey
сomorsiс
да, синхронно - плохо
сomorsiс
Иван
от предыдущего в том то и дело
сomorsiс
тогда чейни
сomorsiс
rp0(...)
.then(x=> rp1(x, awdawd))
.then(x=> rp2(x, 12))
сomorsiс
//образно
Иван
если независим то все понятно . тут как раз удобней . Ну тогда и получается если мне один из запросов в цепочке выдает массив для обработки , то я вынужден либо сеттаймаут делать при обработке либо все запросы дружною толпой идут по одному адресу . А если их около 10к ))) спасибо добрым людям сейчас попробую асинк использовать . как раз обновил ноду с шестой на восьмую . Но я бы сказал дико не привчно мне чайнику )
сomorsiс
возьми bluebird
сomorsiс
это очень хорошая либа
сomorsiс
там есть методы для асинхронной обработки коллекций
Иван
Дк сначала бы научится и главное понять смысл на чистом ноде . а дальше уже использовать всякие удобства ) но за наводку спасибо почитаю
сomorsiс
всмысле она расширяет промисы
сomorsiс
и потом будет неприятно от осознания что некоторые вещи сделать проще чем есть
сomorsiс
хотя async/await по сути похожие удобства предлагает, просто немного в другой форме
Иван
Кстати пока не забыл последний вопрос который мозг ломает мне )) . В ноде просто так не получится дернуть функцию получить ответ и дальше идти ? Если это асинхронная функция(а 99.99% всего в ноде асинхронно) , то мне придется опять же использовать async/await либо .then чтобы отловить значение . Вообще эта муть с асинхронностью насколько понимаю идет от того чтобы не вешать браузер пока код скрипта выполняется ?
сomorsiс
а в чем проблема юзать асинхронность везде (кроме функций не общающихся с внешним миром)?
Иван
в том что следущая команда которая должна использовать результат предыдущей еще не знает этот результат , но уже выполняется ( . Пока что моск плавится от этого. Делать какието цепочки только ради того чтобы обработать данные . Когда посути асинхронность и не нужна в данный момент . Вообщем не привык я еще к яваскрипту ))))
сomorsiс
представь что уже знает
Anonymous
Есть чатик по линуксу?
Willy
сomorsiс
только сперва собрать надо)
Anonymous
Ну я ж не генто спрашиваю
Иван
с чистыми for(....) { await do_smth()}
спасибо ! По итогу работает .
const makeRequest = async () => {
for(var i = 0; i < d.length;i++ ) { await getJSON(d[i])}
return "done"
}
в таком варианте
сomorsiс
а почему не параллельно?
сomorsiс
а, точно, у тебя там какая-то последовательная зависимость
Иван
Мне и надо чтобы последовательно было
Иван
как раз подобного модуля очень не хватало
Иван
есть приложение , кторое не держит больше 70 запросов в секунду . а пульнуть надо примерно 2100 запросов . Ранее приходилось SetTimeOut'ами разруливать . сейчас получится данным костылем .
Иван
но всеравно как то не красиво и не правильно
Алексей
Привет всем
Алексей
Тут фигня какая-то, не могу зареквайрить path
Алексей
Пишу const path = require('path')