1. 程式人生 > >next() 偽函數

next() 偽函數

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() 偽函數