Я пытаюсь обработать несколько SQL -запросов, используя утомительный. Из того, что я получил, можно сделать только один запрос на соединение. Так что моя идея состоит в том, чтобы сделать запрос и по обратному вызову сделать следующий. Но по какой-то причине обрабатывается только один запрос. Результат этого запроса верный, но вместо следующего ничего не происходит. Если я использую тайм-аут вместо заполнителя вместо функции запроса, функция запускается правильное количество раз.
Я знаю, что есть утомительные пулы, но в теории это также должно работать, так что это вызывает ошибки много, что это не так.
let ctr = 0;
//do a sql request for each object in array
function getCurrentShift() {
let currentHr = earlyShift.prodHours[ctr];
getOKHour(currentHr.startTime, currentHr.endTime, function (res) {
currentHr.ok = res;
console.log(`ctr:${ctr}, sumOk:${res}`);
ctr++;
if (ctr === earlyShift.prodHours.length) {
console.log(earlyShift.prodHours);
ctr = 0;
} else {
getCurrentShift();
}
});
// take start and end time and return number of elements within that time frame
function getOKHour(sTime, eTime, callback) {
let result;
connection.on("connect", function (err) {
if (err) {
console.log("Error:", err);
}
request = new Request(
`select count(*) From [dataBase].[dbo].[TB_CHK_AIR_TEST] where (Parz_State = 4200 or Parz_State = 4300) and chktime >= @startT and chktime < @endT`,
function (err) {
if (err) {
console.log(err);
}
}
);
request.addParameter("startT", TYPES.DateTime, sTime);
request.addParameter("endT", TYPES.DateTime, eTime);
request.on("row", function (columns) {
result = columns[0].value;
});
request.on("doneInProc", (rowCount, more) => {
console.log(callback);
callback(result);
result = "";
});
connection.execSql(request);
});
}