串行,第一個完成後,去執行第二個第二個異步任務,使用next()尾函數。首先我麼想完成三個任務,task1,task2,task3,如圖:html
實現方式1:數組
var fs = require("fs"); function task1(){ fs.readFile('./a.txt',function(err,data){ console.log(data.toString()); task2(); }) } function task2(){ fs.readFile('./b.txt',function(err,data){ console.log(data.toString()); task3(); }) } function task3(){ fs.readFile('./b.txt',function(err,data){ console.log(data.toString()); }) } task1();
實現方式2:使用task函數異步
var fs = require("fs");
function task1(){
fs.readFile('./a.txt',function(err,data){
console.log("a---"+data.toString());
next();
})
}
function task2(){
fs.readFile('./b.txt',function(err,data){
console.log("b---"+data.toString());
next();
})
}
function task3(){
fs.readFile('./b.txt',function(err,data){
console.log("c---"+data.toString());
})
}
//串行能夠在任務1中調用任務2 ,任務2調用任務3
//第二種方式:
var taskArray = [task1,task2,task3];
function next(){
//數組中shift方法,刪除第一個元素
var task = taskArray.shift();
console.log(task)
task();
}
next();
或者:函數
var fs = require("fs");
function task1(next){
fs.readFile('./a.txt',function(err,data){
console.log("a---"+data.toString());
next();
})
}
function task2(next){
fs.readFile('./b.txt',function(err,data){
console.log("b---"+data.toString());
next();
})
}
function task3(next){
fs.readFile('./b.txt',function(err,data){
console.log("c---"+data.toString());
})
}
//串行能夠在任務1中調用任務2 ,任務2調用任務3
//第二種方式:
var taskArray = [task1,task2,task3];
(function(){
function next(){
//數組中shift方法,刪除第一個元素
var task = taskArray.shift();
console.log(task)
task(next);
}
next();
})()