Я пытаюсь обеспечить, чтобы один запрос mysql приводил к другому и не был завершен до тех пор, пока все его дочерние запросы не будут завершены. Так, например, я начинаю с одной строки select и stream и выполняю последующие запросы из результата этой строки. Это можно выполнить с обратными вызовами, но в конечном итоге у меня заканчивается нехватка памяти, поэтому я хотел бы замедлить процесс и запустить партии, но из-за асинхронного характера отправки я не могу удержать все в фазе и закончить соединение после того, как все строки обработаны.Создание синхронных запросов с узлом-mysql
Вот пример:
var query = conn.query('select id from table1 limit 10');
query.on('result', function(row){
console.log('query1', row);
var query2 = conn.query('select id from books where id = ? ', [row.id]);
query2.on('result', function(row2){
console.log('query2', row2);
var query3 = conn.query('insert into test (id) values (?)', [row2.id]);
query3.on('result', function(row3){
console.log(row3);
});
});
});
query.on('end', function(){
conn.end();
});
выше терпит неудачу, потому что есть еще строки для обработки в query3 после первоначального запроса закончился.
Любые мысли? Фактический код еще сложнее, потому что я должен обработать xml из последующих запросов и сжечь еще больше вставок, когда я прохожу через пакет.
Спасибо!
Довольно хорошо, вы поняли! ;) – glukki