@nodejs_ru

Страница 774 из 2748
Сергей
19.05.2017
18:55:50
посмотри const list

в обоих случаях

Zaur
19.05.2017
18:55:54
var tasks = []; tasks.push(Promise.resolve(1)); tasks.push(Promise.reject('err')); tasks.push(Promise.resolve(2)); function runTasks(tasks) { if (!tasks.length) { console.log('complete'); return Promise.resolve(); } return tasks.shift() .then(function(res) { console.log('res:', res); return runTasks(tasks); }) .catch(function(err) { console.log('err', err); return runTasks(tasks); }) }; Вывод в консоль: res: 1 err err res: 2 complete все норм ))

Сергей
19.05.2017
18:56:22
не норм

Google
Сергей
19.05.2017
18:56:23


у тебя старая нода

и это не корректный способ

Rafael
19.05.2017
18:57:57
посмотри const list
одно и то же

а все

понял в чем разница

господи, пора сделать перерыв :\

Сергей
19.05.2017
18:58:19


выглядит как костыль

но решает

Rafael
19.05.2017
18:58:50
а в чем спор?

Zaur
19.05.2017
18:59:01
у тебя старая нода
node version: v7.10.0 res: 1 err err res: 2 complete

Google
Сергей
19.05.2017
18:59:16
а в чем спор?
спора нет просто как правильно последовательно обойти все промисы, и чтоб не свалилось от одного упавшего

Rafael
19.05.2017
18:59:24
Сергей
19.05.2017
18:59:46


Rafael
19.05.2017
18:59:51
эээ, с какой стати?
не дублирует

Сергей
19.05.2017
19:00:11
эээ, с какой стати?
массивы иммутабельны) по своей сути внутри массив будет дублирован а старый выкинут сборщику (могу ошибаться)

Rafael
19.05.2017
19:00:26
где это написано?

как раз таки массивы мутабельны, а строчки - нет

Zaur
19.05.2017
19:00:44
у меня не ругается так :( почему?

Salim
19.05.2017
19:01:59
народ кто пользуется редактором атом ?

Zaur
19.05.2017
19:02:18
Сергей
19.05.2017
19:02:25
OSX
у меня тоже

Salim
19.05.2017
19:02:35
кто пользуется Атом. как убрать окошко Key binding



Rafael
19.05.2017
19:03:07
у меня не ругается так :( почему?
потому что у тебя даже в случае ошибки в catch() ты все равно продолжаешь рекурсию

Сергей
19.05.2017
19:03:08
ты не в курсе как делать скриншоты?

Google
Сергей
19.05.2017
19:03:31
мб он запускает не такой же код как тот который скинул

Rafael
19.05.2017
19:03:54
Сергей
19.05.2017
19:04:06
var tasks = []; tasks.push(Promise.resolve(1)); tasks.push(Promise.reject('err')); tasks.push(Promise.resolve(2)); function runTasks(tasks) { if (!tasks.length) { console.log('complete'); return Promise.resolve(); } return tasks.shift() .then(function(res) { console.log('res:', res); return runTasks(tasks); }) .catch(function(err) { console.log('err', err); return runTasks(tasks); }) };

Salim
19.05.2017
19:04:10
нет )))

Zaur
19.05.2017
19:04:15
потому что у тебя даже в случае ошибки в catch() ты все равно продолжаешь рекурсию
ну да, поэтому я и говорю что код рабочий) а сова говорит нет, пытаюсь понять почему

Сергей
19.05.2017
19:04:16
нет )))
какая система

Salim
19.05.2017
19:04:28
винда

Сергей
19.05.2017
19:04:34
Salim
19.05.2017
19:04:40
7

Konstantin
19.05.2017
19:04:43
винда
Win+PrintScreen

Сергей
19.05.2017
19:05:01
кнопка PrintScreen или же monosnap, joxy

Сергей
19.05.2017
19:05:09
а вообще пиши на es7 с const/let, async/await и без прототипов и self

Salim
19.05.2017
19:05:36
благодарю всех

Сергей
19.05.2017
19:06:18
@abdulgalimov вот твоё решение



Rafael
19.05.2017
19:06:22
вот хоть убейте, я не вижу, где у вас первый вызов рантаска просиходит

Zaur
19.05.2017
19:06:40


Google
Сергей
19.05.2017
19:07:18
кстати, и зачем в рекурсию, если можно без неё?

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

Rafael
19.05.2017
19:07:51
у тебя тут вроде переполнение стека должно быть, потому что даже когда тасклист пустой, ты все равно резолвишься

а не, этот промис резолв разворачивает стек, тьфу

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

Admin
ERROR: S client not available

Сергей
19.05.2017
19:10:34


и без рекурсии

и результаты собираю

если что, node v 7.10 умеет async/await из коробки

Rafael
19.05.2017
19:11:34
и результаты собираю
ну ты вообще мог использовать Promise.all njulf e;

тогда уж

Сергей
19.05.2017
19:11:48
ну ты вообще мог использовать Promise.all njulf e;
нет если один упал, все падает с ошибкой



Сергей
19.05.2017
19:12:37
@abdulgalimov теперь ты разобрался в списках промисов))

Rafael
19.05.2017
19:13:04
у тебя лишняя переменная

Google
Zaur
19.05.2017
19:13:08
@abdulgalimov теперь ты разобрался в списках промисов))
вопросы все равно остались) почему у тебя ошибка, а у меня нет. И почему мой способ плохой? ))

Сергей
19.05.2017
19:13:25
у тебя лишняя переменная
да, можно было results.push(await prom)

вопросы все равно остались) почему у тебя ошибка, а у меня нет. И почему мой способ плохой? ))
если задачуц можно решить без рекурсии, лучше решить Без рекурсии

Rafael
19.05.2017
19:14:09
рекурсия это оверхед по памяти и стеку

циклы же в этом плане более экономны

и вроде в js нет хвостовой рекурсии, но это не точно

Сергей
19.05.2017
19:14:48
а асинхронные циклы ещё и понятны

Zaur
19.05.2017
19:15:09
рекурсия это оверхед по памяти и стеку
стеку? разрыв стека разве не происходит ?

Сергей
19.05.2017
19:15:20
Rafael
19.05.2017
19:15:36
а асинхронные циклы ещё и понятны
ктстаи а где у тебя ключевое слово async?

а все, понял где

Сергей
19.05.2017
19:15:59
лол

Rafael
19.05.2017
19:16:55
го еще нетревиальных вопросов, это было интересненько

я кстати в прошлы раз, когда мы спорили о строчках, попытался поковыряться в v8, но ничего толкового понять не смог

Zaur
19.05.2017
19:17:40


Rafael
19.05.2017
19:19:08
где разрыв то?

Zaur
19.05.2017
19:19:39
В captureStackTrace же нет кучи вызовов runTasks, только последний. Значит переполнения стека нет.

А раз нет переполнения стека, значит это не рекурсия, а просто множественный вызов одной функции :) @Fl0pZz @sergeysova

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