whilst

whilst(test, fn, callback)

中途出错。出错后立刻调用第三个函数。

var count = 0;

async.whilst(
    function () { return count < 5; },
    function (callback) {
        count++;
        setTimeout(function () {
            callback(null, count);
        }, 1000);
    },
    function (err, n) {
        // 5 seconds have passed, n = 5
    }
);

doWhilst

doWhilst(fn, test, callback)

doWhilst交换了fn,test的参数位置,先执行一次循环,再做test判断。 和javascript中do..while语法一致。

var count4 = 0;
async.doWhilst(
    function(cb) {
        log('1.4 count: ', count4);
        t.inc(count4++, cb);
    },
    function() { log("1.4 test"); return count4 < 3 },
    function(err,result){ // result没有用
        log('1.4 err: ', err);
        log('1.4 result: ', result);
    }
);

until

until(test, fn, callback)

until与whilst正好相反,当test为false时循环,与true时跳出

doUntil

doUntil(fn, test, callback)

doUntil与doWhilst正好相反,当test为false时循环,与true时跳出。其它特性一致。