
Grigorii
22.07.2018
15:37:21

Павел
22.07.2018
15:37:30

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
А ты задавай

Grigorii
22.07.2018
15:44:15

Павел
22.07.2018
15:45:43

Google

Павел
22.07.2018
15:46:04

Alexander
22.07.2018
15:46:25

Grigorii
22.07.2018
15:46:56

Павел
22.07.2018
15:47:33

Alexander
22.07.2018
15:47:56

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

Mikhail
22.07.2018
15:48:31

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

Alexander
22.07.2018
15:49:45

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

Павел
22.07.2018
15:50:13
вне 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: не пиши ничего просто в глобальной области, работай с функциями / классами, делай приложение асинхронным, в том числе тут же вариант с самоисполняемой функцией.
Проведу аналогию.
Также можно сказать "мне нужно синхронное подключение к БД, потому что надо, чтобы приложение запускалось, когда к БД уже подключилось".
Ведь подклчение к БД - асинхронное, но я делаю его в глобальной области, а дальше тут же в глобальной работаю с БД.
Но при этом все отлично работают с асинхронным подключениенм к БД


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

Grigorii
22.07.2018
15:53:34

Dika
22.07.2018
15:53:55

Mikhail
22.07.2018
15:54:01

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

Дмитрий
22.07.2018
15:56:59

Grigorii
22.07.2018
15:57:21

Павел
22.07.2018
15:58:29

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

Дмитрий
22.07.2018
15:58:53

Mikhail
22.07.2018
15:58:57

Павел
22.07.2018
15:59:31

Google

Grigorii
22.07.2018
15:59:46

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

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

Павел
22.07.2018
16:00:25

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

Grigorii
22.07.2018
16:01:39

Павел
22.07.2018
16:01:51
калл бек таймера выполнится в другом контексте с другим стеком вызывов

Mikhail
22.07.2018
16:02:41

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

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

Grigorii
22.07.2018
16:05:05

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

Google

Fil
22.07.2018
16:51:47
там фокус на контент
работает только при помощи рест апи

Grigorii
22.07.2018
16:52:10

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

Josh
22.07.2018
18:58:47

Sergey
22.07.2018
19:01:19

Alexander
22.07.2018
19:06:34

Grigorii
22.07.2018
19:15:01

Sergey
22.07.2018
19:16:24