@JSlang

Страница 753 из 2237
Сергей
17.03.2017
08:21:41
Блдж, с чего ты решил?
колбеки выполняются гарантированно последовательно просто порядок не определен

Roman
17.03.2017
08:22:04
Ну event loop ещё никто не отменял. Если, правда, не трогать скролл.
Несколько параллельных http-запросов выставляют http-код ответа у какого-нибудь объекта. Где тебе тут очередность?

Сергей
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
мне тоже не нравится, как выкручиваетесь в таких случаях? доп переменная ?
Выносить then вне инициального промиса - проучится плоский чейн промисов

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
А не)

Каїн
17.03.2017
09:48:34
А не)
Удаляй ы)))

то бишь функция отдельная
Наверное, не до конца понял. Выше пример от совы

Сергей
17.03.2017
09:49:34
единственный момент, это если мне нужен результат и getUserByName и getUserByAccountId
делал типа так, но это отстой: getFirst() .then(first => getSecond(first.id).then(second => [ first, second ])) .then([first, second] => console.log(first, second))

Каїн
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: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
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
https://goo.gl/LJaLqt
не жалеешь ты наши глаза

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

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

Страница 753 из 2237