1. 程式人生 > >Nodejs:非同步流程控制(上)

Nodejs:非同步流程控制(上)

function oneFun() {
    // setTimeout(function () {
    //     console.log("a");
    // }, 1000);
    i = 0;
    setInterval(function () {
        console.log("aaa==" + new Date());
        i++;
        if (i == 3) {
            clearInterval(this);
        }
    }, 1000);
    console.log("oneFun");
}

function twoFun() {
    j = 0;
    setInterval(function () {
        console.log("bbb==" + new Date());
        j++;
        if (j == 3) {
            clearInterval(this);
        }
    }, 1000);
    console.log("oneFun執行完畢");
}

//oneFun();
//twoFun();

/*
1,序列無關聯:async.series
2,並行無關聯:async.parallel
3,序列有關聯:waterfall
*/

//非同步操作,序列無關聯
//npm install async --save-dev
var async = require('async');
function exec() {
    async.series({
        one: function (done) {
            i = 0;
            setInterval(function () {
                console.log("aaa==" + new Date());
                i++;
                if (i == 3) {
                    clearInterval(this);
                    done(null, 'one完畢');
                }
            }, 1000);
        },
        two: function (done) {
            j = 0;
            setInterval(function () {
                console.log("bbb==" + new Date());
                j++;
                if (j == 3) {
                    clearInterval(this);
                    done(null, 'two完畢');
                }
            }, 1000);
        }
    }, function (err, rs) {
        console.log(err);
        console.log(rs);
    }
    )
}

exec();
console.log("主程序執行完畢");