Обработка нескольких запросов с использованием обратных вызовов - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь обработать несколько 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);
      });
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...