У меня есть 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). как это остановить и сделать это по порядку. заранее спасибо.





Первым аргументом функции обратного вызова является ошибка, в случае успеха передайте 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