Добрый день.
Изучаю node.js, после синхронного php немного сложно, но очень интересно.
Есть такой упрощенный пример кода:
db.query(" SELECT * FROM users LIMIT 0,100 ", function(err, result) {
for( row of result ) {
request('https://site.ru/api/', function (error, response, body) {
db.query(" UPDATE users SET some_field='"+body+"' WHERE id='"+row['id']+"' ", function(err, result) {
console.log('User updated');
});
});
}
});
В данном коде, из базы данных происходит выборка записей, затем она перебирается циклом, и для каждой записи, делается запрос к апи стороннего сайта, после получения ответа, соответствующая строка в БД обновляется. Так вот, не могу сообразить, как сделать что бы каждая следующая итерация цикла for, происходила только после того как выполнятся асинхронные функции request и db, то есть что бы запросы к сайту шли строго последовательно, сейчас же все происходит параллельно. Скорее всего вместо for нада использовать что то другое, либо что то с использованием промисов, не соображу.