@nodejs_ru

Страница 2327 из 2748
Grigorii
22.07.2018
15:37:21
Привет, нужно подождать промис СИНХРОННО в НЕ async функции. я понимаю, что это антипатерн, но нужно сделать
Никак. Так или иначе надо делать функцию асинхронной, либо async, либо возвращать промис, либо (простите меня) коллбек

Павел
22.07.2018
15:37:30
сделай функцию async
не могу, потому, что она используется в верхнем уровне, там где require

Grigorii
22.07.2018
15:37:58
тогда ищи способ делать синхронно то, что ты делаешь в промисе

Павел
22.07.2018
15:38:13
жде ответа от сервера

Google
Grigorii
22.07.2018
15:38:19
Большинство операций в node имеют синхронный аналог/опцию (но хорошо подумай над этим)

Павел
22.07.2018
15:38:39
я уже очень хорошо подумал, но выбора нету

require синхронная

я риализую dyn_require

Grigorii
22.07.2018
15:38:57
Но прежде, чем делать асинхронную функцию синхронной, хорошо подумай, а правильно ли ты всё делаешь

Павел
22.07.2018
15:39:07
собственно, поэтому тоже вынужден делать синхронно

так как сделать то?

Grigorii
22.07.2018
15:41:39
Опиши подробнее задачу

99.9% случаев, когда хочется асинхронную функцию делать синхронной - это проблема в решении. Не говоря о том, что делать такие вещи синхронными - это дополнительная проблема для однопоточного приложения

Eugene
22.07.2018
15:44:04
Sequelize здесь не будет оффтопом? Кто-нибудь в нём разбирается, смысл задавать вопрос есть?

Alexander
22.07.2018
15:44:14
А ты задавай

Google
Alexander
22.07.2018
15:46:25
Grigorii
22.07.2018
15:46:56
Павел
22.07.2018
15:47:33
ты всё ещё не описал проблему)
Проблема в том, что я должен дождаться запроса от клиента, где он передаст строку с файлом, который нужно загрузить

Grigorii
22.07.2018
15:48:07
Это всё ещё плохо описывает всю задачу) Например, а зачем ждать? Или может речь про инициализацию приложения?

Grigorii
22.07.2018
15:48:34
Почему нельзя загрузить асинхронно?

Павел
22.07.2018
15:49:34
Потому, что мы выполняем require в коде вне функции, как следствие мы не можем использовать await

Grigorii
22.07.2018
15:49:35
async (file) => { return require(file); } асинхронный require

Grigorii
22.07.2018
15:50:06
ого
Я пытался намекнуть на то, что я всё ещё не понимаю полностью проблему Павла

Павел
22.07.2018
15:50:13
async (file) => { return require(file); } асинхронный require
и что дальше? мы не можем использовать await в верхнем коде

вне async функции

Alexander
22.07.2018
15:50:31
Павел
22.07.2018
15:50:53
если мне нужно выполнить его там же где и все остальные require как я это изменю?

Alexander
22.07.2018
15:51:04
Ух как сложно

Давайте сами, ребятки

Павел
22.07.2018
15:51:20
ну так не зря require синхронный

я думаю, если была бы простая возможность его бы тоже сделали асинхронным

Google
Павел
22.07.2018
15:51:57
есть вариант, реально все завернуть в async функцию, но это уже больше на порнографию похоже будет

Mikhail
22.07.2018
15:51:59
Давайте сами, ребятки
+ Так и не понял ничего

Grigorii
22.07.2018
15:52:19
и что дальше? мы не можем использовать await в верхнем коде
Вариант 1: делай синхронный запрос (но 10 раз подумай, не сделаешь ли ты приложение очень плохим) Вариант 2: не пиши ничего просто в глобальной области, работай с функциями / классами, делай приложение асинхронным, в том числе тут же вариант с самоисполняемой функцией. Проведу аналогию. Также можно сказать "мне нужно синхронное подключение к БД, потому что надо, чтобы приложение запускалось, когда к БД уже подключилось". Ведь подклчение к БД - асинхронное, но я делаю его в глобальной области, а дальше тут же в глобальной работаю с БД. Но при этом все отлично работают с асинхронным подключениенм к БД

Grigorii
22.07.2018
15:53:34
есть вариант, реально все завернуть в async функцию, но это уже больше на порнографию похоже будет
Нет, делать в js приложение асинхронным - это нормально, почему нет. Как и предствлять его в виде структуры методов классов/функций, многие из которых асинхронные

Dika
22.07.2018
15:53:55
async (file) => { return require(file); } асинхронный require
Так это не добавит асинхронности, просто обернет в промис

Павел
22.07.2018
15:54:43
да я могу решить эту задачу, через подобную "красоту" но хотелось бы чтото покрасивей, чтобы я просто заменял require на свою реализацию где это нужно

неужели не как нельзя дождаться промиса синхронно без блокировки очереди событий

Вот, задача свтоит так, дождаться промикса синхронно без блокировки очереди событий

блокировку не могу доспустить тк не придет запрос от сервера в этом случае

Grigorii
22.07.2018
15:57:21
да я могу решить эту задачу, через подобную "красоту" но хотелось бы чтото покрасивей, чтобы я просто заменял require на свою реализацию где это нужно
1. Просто заменить require на твой в твоей задаче - никак, на текущий момент это противоречит ноде. 2. Это нормлаьно, когда в приложении есть асинхронные модули и ты дожилаешься их загрузки

Павел
22.07.2018
15:58:29
1. Просто заменить require на твой в твоей задаче - никак, на текущий момент это противоречит ноде. 2. Это нормлаьно, когда в приложении есть асинхронные модули и ты дожилаешься их загрузки
require значит не противоречит, а моя реализация сразу противоречит =) ПРоблема в том, что придется делать все модули асинхронными тогда

Grigorii
22.07.2018
15:58:53
Не работай в глобальной области, разбивай приложение на модули/классы/функции, добавляй где надо async, а дальше на твоё вкус 1. через .on 2. через промис / await 3. колбеееек

Павел
22.07.2018
15:59:31
У вас каша в голове
спасибо, за дельное замечание

Google
Grigorii
22.07.2018
15:59:46
require значит не противоречит, а моя реализация сразу противоречит =) ПРоблема в том, что придется делать все модули асинхронными тогда
А чем require противоречить должен? Он сихронный, у него никаких проблем. Хотя он может вернуть промис, или вернуть объект, у которого один из методов вернёт промис, когда всё загрузится

Eugene
22.07.2018
15:59:57
Вопрос по Sequelize (pg): https://gist.github.com/D5T/4d4b392a0bd05d2c512ce281d0569277

Grigorii
22.07.2018
16:00:05
Я уже писал выше - аналог задаче - это подключение к БД при инициализации приложения

Mikhail
22.07.2018
16:00:34
спасибо, за дельное замечание
Вы хотите синхронное ожидание промиса, но чтобы очередь событий не блокировалась. Где же тогда синхронность?

Grigorii
22.07.2018
16:01:20
ну да, похоже по сути
Но при этом с БД никаких проблем) Почему? потому что db.connect().then((db) => { myApp.start(db); }) Не обязательно писать весь код просто глобально

Павел
22.07.2018
16:01:26
Вы хотите синхронное ожидание промиса, но чтобы очередь событий не блокировалась. Где же тогда синхронность?
синхронность в этом контексте выполнения, при этом другие задачи вроде таймеров и сетевых зарпосов должны продолжать работать, в чем проблема

Павел
22.07.2018
16:01:51
В однопоточности
1 поток не значит 1 контекст

калл бек таймера выполнится в другом контексте с другим стеком вызывов

Grigorii
22.07.2018
16:03:16
Возвращайте в своём require промис, а дальше всё как обычно в js

Павел
22.07.2018
16:03:26
есть промикс и не async функция, все что есть. там кидать то нечего

Возвращайте в своём require промис, а дальше всё как обычно в js
да это решение я и так знаю. ладно спасибо, я понял что вариантов нету

Grigorii
22.07.2018
16:05:05
да это решение я и так знаю. ладно спасибо, я понял что вариантов нету
Таков nodejs, тут уж ничего не поделать (да и это нормальная ситуация, а предложенные решения - нормальные). Другой вариант - ждите, пока выйдет nodejs, в котором глобальная область допускает await (вроде собирается такая выходить)

Вопрос по Sequelize (pg): https://gist.github.com/D5T/4d4b392a0bd05d2c512ce281d0569277
Можно явно в attributes перечислить, что нужно

Eugene
22.07.2018
16:34:14
Можно явно в attributes перечислить, что нужно
GroupLesson всё равно никуда не девается. Не знаю, как его убрать… UPD: проблема решена методом *научного* тыка. Добавил through: {attributes: []}, как советуют ребята в Issues на GitHub. Что это за through - не знаю. Документация у них ужасная.

Fil
22.07.2018
16:44:08
Почему все еще не перешли на headless cms?

Grigorii
22.07.2018
16:51:03
Fil
22.07.2018
16:51:36
А почему должны?
ну это ж удобно навига какой нить wordpress

Google
Fil
22.07.2018
16:51:47
там фокус на контент

работает только при помощи рест апи

Grigorii
22.07.2018
16:52:10
ну это ж удобно навига какой нить wordpress
А почему вы считаете, что тут все сидят на вордпресс?)

Fil
22.07.2018
16:53:00
на чем тут сидят?

Grigorii
22.07.2018
16:55:58
на nodejs, наверное

express, koa, rails, total, adonis, keystone, nest

Nurlan
22.07.2018
16:58:24
Добрый вечер

Как реализовать выход пользователя через passport js

Подскажите пожалуйста

Используется localStrategy

Как оборвать сессию

Alex
22.07.2018
17:00:22
app.get('/logout', function(req, res){ req.logout(); res.redirect('/'); });

Nurlan
22.07.2018
17:06:12
У меня почти также только вместо res.redirect я написал res.end

Fil
22.07.2018
18:09:46
arts
22.07.2018
18:10:52
express koa итд это cms?
Нет. Забудь вообще это слово

Josh
22.07.2018
18:58:47
express koa итд это cms?
забаньте его уже

Alexander
22.07.2018
19:06:34
Sergey
22.07.2018
19:16:24
есть ОРМ лучше? (для ноды)
не знаю. типа их две основных sequelize и knex

Страница 2327 из 2748