2018年11月20日 星期二

node.js process.nextTick 與 setImmediate() 差異



a();
process.nextTick(b);
process.nextTick(c);
d();


function a(){
    console.log("a start");
    setTimeout(() => {
        console.log("a end");
    }, 0)
}

function b(){
    console.log("b start");

    setTimeout(() => {
        console.log("b end");
    }, 0)
}

function c(){
    console.log("c start");

    setTimeout(()=>{
        console.log("c end");
    }, 0);
}

function d(){
    console.log("d start");
    setTimeout(() => {
        console.log("d end");       
    }, 0);
}
-----------------
a start
d start
b start
c start
a end
d end
b end
c end

///////////////////////////////////////////////////////////////////


a();
setImmediate(b);
setImmediate(c);
d();




function a(){
    console.log("a start");
    setTimeout(() => {
        console.log("a end");
    }, 0)
}

function b(){
    console.log("b start");
    setTimeout(() => {
        console.log("b end");
    }, 0)
}

function c(){
    console.log("c start");

    setTimeout(()=>{
        console.log("c end");
    }, 0);
}

function d(){
    console.log("d start");
    setTimeout(() => {
        console.log("d end");       
    }, 0);
}
-----------------
a start
d start
a end
d end

b start
c start
b end
c end