
Сергей
17.03.2017
08:21:41

Roman
17.03.2017
08:22:04

Сергей
17.03.2017
08:22:41
Именно.
блокировки в ноде всё уничтожат

Google

Roman
17.03.2017
08:22:58
Смотря что они блокируют и как реализованы

Сергей
17.03.2017
08:23:28

Roman
17.03.2017
08:24:07

Сергей
17.03.2017
08:24:21
Короч. Есть генераторы и промисы в ноде.
Файберы не нужны!

Vladimir
17.03.2017
08:25:50
ни в одном из твоих ишью не предоставили репро кейс

Сергей
17.03.2017
08:30:08
я вот не могу понять

Google

Сергей
17.03.2017
09:34:54
как разница? кроме названий переменных

Andrey
17.03.2017
09:37:52
Там дальше написано

Каїн
17.03.2017
09:37:58
В последнем идёт создание нового промиса через фабрику?

Сергей
17.03.2017
09:38:18
вот в этих двух кусках кода
разницы же нет

Каїн
17.03.2017
09:38:42
Именно в этих нет

Rafael
17.03.2017
09:38:46

Сергей
17.03.2017
09:39:11
блин копец
можно было также написать
result = result.then(() => promise)
и не **ть мозги

Andrey
17.03.2017
09:39:12
Предполагается, что есть. Первый вариант - промис. Второй - функция, возвращающая промис

Каїн
17.03.2017
09:39:53
Ну это уже надо сорц фабрики видите
А, госпди, эта статья

Сергей
17.03.2017
09:40:42
короч, если я хочу executeSequentially, то преобразовывать руками каждый промис в функцию возвращающую промис это как минимум тупо
намного лучше сделать всё прозрачно
кинул массив, и функция сама сделает внутри что нужно
result = result.then(() => promise)
статья отстой

krn
17.03.2017
09:43:29
мне тоже не нравится, как выкручиваетесь в таких случаях? доп переменная ?

Каїн
17.03.2017
09:43:58
Зачем

Сергей
17.03.2017
09:44:00
выносить в функцию...
но стараюсь проектировать так, чтобы такой фигни не было

Каїн
17.03.2017
09:46:14

Google

Каїн
17.03.2017
09:46:44
Промисы созданы чтобы не делать ступеньки калбеков , автор в примере все равно их делает

Сергей
17.03.2017
09:47:24
getUserByName('noname')
.then(user => getUserByAccountId(user.id))
.then(userAccount => console.log(userAccount))

Каїн
17.03.2017
09:47:49
+

andretshurotshka?❄️кде
17.03.2017
09:48:10
Promise.all ?

Сергей
17.03.2017
09:48:15
единственный момент, это если мне нужен результат и getUserByName и getUserByAccountId

andretshurotshka?❄️кде
17.03.2017
09:48:16
А не)

krn
17.03.2017
09:48:28

Каїн
17.03.2017
09:48:34

Сергей
17.03.2017
09:49:34

Каїн
17.03.2017
09:50:52
Но если нужно кумулировать все выводы со всех промисов тогда да - нужна переменная
Если в последнем нужно ответ и первого и второго и тд

Nikolay
17.03.2017
09:51:27
Можно и без переменной.

Сергей
17.03.2017
09:51:32
как ж

Каїн
17.03.2017
09:51:37
Жги
Дополнительный зен чтобы модифицировать вывод ы

Nikolay
17.03.2017
09:52:25
getFirst().then(first => Promise.all([first, getSecond(first)])).then(([first, second]) => ...)
Тоже коряво, но тем не менее :)

Каїн
17.03.2017
09:52:40
Такое

Сергей
17.03.2017
09:52:47
почти то, что я предложил, только c All

Google

Сергей
17.03.2017
09:52:49

Каїн
17.03.2017
09:53:13
В блюбьрд точно есть решение круче

Rafael
17.03.2017
09:53:17
Кинь ссылку на статью уже

Сергей
17.03.2017
09:53:34
https://m.habrahabr.ru/company/mailru/blog/269465/
можно зафигачить функцию collect
getFirst().then(collect(getSecond()))
.then([first, second] => ///)

Nikolay
17.03.2017
09:54:00

Каїн
17.03.2017
09:54:05
"У автора проблемы с проммисами"
Кстати, если не хардкодом, можно через редюс обьединить все выводы

Admin
ERROR: S client not available

Rafael
17.03.2017
09:55:58

Сергей
17.03.2017
09:56:11

Nikolay
17.03.2017
09:57:02
const firstPromise = getFirst();
const secondPromise = firstPromise.then(getSecond);
Promise.all([firstPromise, secondPromise]).then(...);

Rafael
17.03.2017
09:57:05
Может лучше через генераторы?

Nikolay
17.03.2017
09:57:07
Вот так вроде норм.

Сергей
17.03.2017
09:58:39

Rafael
17.03.2017
09:59:04
покажешь?
я даже не понимаю что вы там делаете

Сергей
17.03.2017
09:59:24

Rafael
17.03.2017
09:59:34
просто использование переменных с названиями getFirst getSecond collect намекает на генераторы

andretshurotshka?❄️кде
17.03.2017
10:00:15
да тут async await хватит, какие генераторы)

Google

Rafael
17.03.2017
10:00:21
а все. понял, промисы у вас уже есть, я думал их генерить нужно

Сергей
17.03.2017
10:00:57
если не сильно думать, то вот так
но можно лучше, конечно же

Rafael
17.03.2017
10:04:55
https://habrahabr.ru/post/209662/

andretshurotshka?❄️кде
17.03.2017
10:05:05
https://goo.gl/LJaLqt

Rafael
17.03.2017
10:05:19
вот тут reduce используют вместо forEach

Сергей
17.03.2017
10:07:44

Rafael
17.03.2017
10:08:44
мне кажется, что функции getFirst и getPromise должны быть фабриками, не?

Сергей
17.03.2017
10:09:00
зачем?

Rafael
17.03.2017
10:09:50
зачем?
ты же хочешь последовательное выполнение, а не "параллельное"
не, не так выразился
ты хочешь упорядоченность

Сергей
17.03.2017
10:10:14
последовательно

Rafael
17.03.2017
10:10:40
ну прсто тебе повезло, потмоу что у тебя пример из пальца высосан, а если каждый промис это запрос?

Сергей
17.03.2017
10:10:56
и что

Rafael
17.03.2017
10:11:28
ты хочешь цепочку 1 -> 2
а у тебя выполнится 2 -> 1
или вот прикинь, ты используешь композицию mapов из MapReduce
ты хочешь результат первого мапа передать во второй, из второго в третий и так далее
но ты их уже зарезолвил поэтому они у тебя хз как выполнились, а потом ты пытаешься их как-то упорядочит