S
S
Sstrax2016-05-19 15:45:21
Node.js
Sstrax, 2016-05-19 15:45:21

How in node.js to force the loop (for loop) to be executed only after the completion of the previous step?

Доброго дня.
Была идея написать свой API к сайтам, которые этого не предусматривают...
Для этого хотел использовать cheerio, но столкнулся с проблемой:
При переборе страниц циклом "For" и сохранением результата программа начинает все ступени цикла for выполнять одновременно, что приводит к вылету приложения. Подскажите, чем дополнить цикл For для выполнения ступеней поочередно?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
Алексей Уколов, 2016-05-19
@alexey-m-ukolov

Очевидно, раз у вас for вдруг начинает работать параллельно, значит внутри что-то асинхронное. Следовательно, вам нужно посмотрить цепочку промисов:

let chain = Promise.resolve();

for (let i = 0; i < 10; i++) {
  chain = chain.then(myAsyncFunction);
}

chain.then(() => {console.log('all done')});

https://jsfiddle.net/koceg/entn3vqj/

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question