我有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()(异步的第二个函数)。如何停止并按顺序进行。预先感谢。
答案 0 :(得分:0)
回调函数的第一个参数是错误,如果成功,则传递null。
for (var key in result.data) {
if (count == 10) {
// I want to delay 1 second here
setTimeout(generate.bind(key, result.data[key]), 1000);
}
else
generate(key, result.data[key])
count++;
}