@chrome123

Как заставить Node JS Выполнять код по порядку?

Доброе время суток. Помогите решить сложившуюся проблему. Имеется код такого вида.
rez;
 connection.query('SELECT Некий запрос ', function(err, rows, fields) {
 if (err) throw err;
 for (var i=0; i < rows.length; i++) {

 rez = 'Записываем значение запроса'; 

connection.query("SELECT  ", function(err_photo, rows_photo, fields) {
if (err_photo) throw err_photo;

for(var k=0; k < rows_photo.length; k++){

rez +='Записываем значение 2 запроса';
console.log('1');
};
                                    
});

 console.log('2');

                        };
                    });


Так вот код в данном случае выполняется асинхронно. Потому что сперва в консоль записывается console.log('2'); а уже потом console.log('1'); Помогите пожалуйста Сделать так что бы код выполнялся по порядку?
  • Вопрос задан
  • 631 просмотр
Пригласить эксперта
Ответы на вопрос 2
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Оборачиваем в https://github.com/caolan/async
async.series([
    function(){ /* выполнится первым */ },
    function(){ /* выполнится вторым */ }
]);
Ответ написан
В поддержку совета Тимур Шемсединов, вот вам код:

var async = require('async');

var queries = ['query_1', 'query_2'],
    result = '';

async.reduce(
  queries, 
  result, 
  function iterator(result, query, callback) {
    connection.query("SELECT  " + query, function(err_photo, rows_photo, fields) {
      if (err_photo) callback(err_photo);

      for (var k=0; k < rows_photo.length; k++) {
        result += 'Записываем значение 2 запроса';
        console.log('1');
      }

      callback(null, result);
    })
  },
  function done(error, result) {
    console.log(error, result);
  }
);


Также прошу вас отформатировать код в вашем вопросе.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы