异步系列未正确调用

Async series is not calling properly

我有 3 个函数必须依次调用。但第一个函数正在执行,第二个和第三个函数正在执行。

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

内部函数:

function api_hit(callback){
  console.log("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.log("result api");
    msg.data=res; 
    msg.case='api_hit'; 
    callback(msg);
  });
}
function delay(callback){
  console.log("Inside delay");
  var msg={'data':[]};
  global_vars.sleep(1000);
  msg.data='success';
  msg.case='task';
  console.log("after delay");
  callback(msg);
}

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

我的意图是在其他函数完成后调用这些函数,所有结果都必须在单个变量中处理。但是在 api_hit 方法中,当它在其中执行另一个函数时,就会执行 delay()(异步的第二个函数)。如何阻止它并按顺序进行。提前致谢。

回调函数的第一个参数是错误,成功时传null。

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

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

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

function mysql_check(callback) {
    setTimeout(() => {
        console.log('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.log(err);
            console.log(response);
        }
    );
}

文档link:https://caolan.github.io/async/docs.html#series