next() 偽函數
阿新 • • 發佈:2017-07-06
err images style 任務 on() log pan spa console
串行,第一個完成後,去執行第二個第二個異步任務,使用next()尾函數。首先我麽想完成三個任務,task1,task2,task3,如圖:
實現方式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(); })()
next() 偽函數