Асинхронная серия не вызывается должным образом

У меня есть 3 функции, которые нужно вызывать последовательно одну за другой. но первая функция выполняется, а между второй и третьей выполняются.

var tasklist=[api_hit,delay,mysql_check];
    if (task_list.length>0){          
      async.series(
        tasklist,
        function(err, response) {
          console.info(err);              
          console.info(response);
          results.data=response;
          results.message = "Completed";
          console.info(results);                      
        }
      );
    }

Внутренние функции:

function api_hit(callback){
  console.info("Inside api");
  var ele=task_list[0];
  var apidata=[]; 
  var msg = {'data':[]};       
  apiinfo.forEach((item,key)=>{               
    if (item.Method_name==ele.Parameters){
      //Here checking random Int value
      if (item.Value= = "{{$randomInt}}"){
        item.Value = generate(25);
      }
      apidata.push(item);
    }
  });
  var data=[];
  data['api']=apidata;   
   apiModel.validateAPI(data,function(res){
    console.info("result api");
    msg.data=res; 
    msg.case='api_hit'; 
    callback(msg);
  });
}
function delay(callback){
  console.info("Inside delay");
  var msg = {'data':[]};
  global_vars.sleep(1000);
  msg.data='success';
  msg.case='task';
  console.info("after delay");
  callback(msg);
}

function mysql_check(callback){
  console.info("inside mysql");
  var ele=task_list[2];
  var dbdata=[];      
  var msg = {'data':[]};
  dbchecks.forEach((item,key)=>{               
    if (item.query_id==ele.Parameters){
  console.info(item.query+" ::: "+ele.Parameters);
      dbdata.push(item);
    }
  });
  data['dbdata']=dbdata;
  apiModel.checkmysql(data,function(err,res){    
    if (err) throw err;
    console.info("inside mysql res");
    msg.data=res;
    msg.case='task2';         
    callback(msg);
  });
}

Я намерен вызывать эти функции после завершения других, и все результаты должны обрабатываться в одной переменной. но в методе api_hit, когда он выполняет внутри него другую функцию, выполняется delay () (вторая функция async). как это остановить и сделать это по порядку. заранее спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первым аргументом функции обратного вызова является ошибка, в случае успеха передайте null.

'use strict'
const async = require('async')

function api_hit(callback) {
    setTimeout(() => {
        console.info('Completed api_hit')
        callback(null, 'api_hit')
    }, 1000)
}

function delay(callback) {
    setTimeout(() => {
        console.info('Completed delay')
        callback(null, 'delay')
    }, 100)
}

function mysql_check(callback) {
    setTimeout(() => {
        console.info('Completed mysql_check')
        callback(null, 'mysql_check')
    }, 500)
}

var tasklist = [api_hit, delay, mysql_check];
if (tasklist.length > 0) {
    async.series(
        tasklist,
        function (err, response) {
            console.info(err);
            console.info(response);
        }
    );
}

Ссылка на документ: https://caolan.github.io/async/docs.html#series

Другие вопросы по теме

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

'mocha' не распознается как внутренняя или внешняя команда - mocha не устанавливается автоматически с помощью supertest
Не удалось выполнить процедуру инициализации библиотеки динамической компоновки (DLL) в электронном виде с помощью nodegit
Как получить список вакансий google clould talent?
UnhandledPromiseRejectionWarning: TypeError: _base64Stream2.default.encode не является функцией
Heroku не разрешает мне развертывать проект, поскольку я следую инструкциям, но не работаю в моем случае
Подпишитесь на фрагментированные строковые данные от Node, используя наблюдаемые Angular для их отображения, как только фрагменты будут доставлены
Web3.eth.getBlockNumber возвращает запрос {[Function: get]: [Function: bound]}
Отображать значение переменной с использованием механизма шаблонов мопса внутри текстового поля
Создайте глобальную функцию электронной почты в Nodejs
Как отправить уведомление FCM в часовом поясе получателя?