Итак, в настоящее время я использую пакет mysql npm https://www.npmjs.com/package/mysql. У меня есть требование, когда мне придется многократно вызывать хранимую процедуру с оговоркой, что последующие вызовы хранимых процедур зависят от предыдущего вызова. Псевдокод будет выглядеть следующим образом:
let mysql = require("mysql");
let mysqlPoolConnection = mysql.createPool({
connectionLimit: 20,
host: '0.0.0.0',
port: '3306',
user: 'user1',
password: 'pwd',
database: 'mysql_db'
});
for (let index = 0; index < params.length; index++) {
let sp_ProcedureCall = "CALL sp_StoredProcedure(?, ?, ?, ?)";
let sp_ProcedureParams = [params[index].firstParam, params[index].secondParam, params[index].thirdParam, params[index].fourthParam];
// This is where the issue is. I'd like to call the stored procedure once and then once I get a response from it then make subsequent calls. Basically, depending on the previous stored procedure result, I decide whether I continue with subsequent calls or not.
mysqlPoolConnection.query(sp_ProcedureCall, sp_ProcedureParams, (errorObj, responseObj, fieldsObj) => {
}
}
NodeJS является асинхронным, то есть ваш for-loop итерации, не дожидаясь результата вызова. Вам нужно контролировать поток вашей программы, если вы хотите "подождать" для предыдущих результатов.
Посмотрите на библиотеку, такую как async, чтобы включить этот тип потока управления. Из вашего описания everySeries() может быть хорошим вариантом - запускать функцию для каждого значения в массиве и запускать только по одному. (Или уменьшите, в зависимости от того, что вам нужно - есть и другие варианты)