首页 > 怎么能把 js 写得像同步?

怎么能把 js 写得像同步?

函数1 , 周期性调用,轮询某个返回值. 完成后调用函数2
函数2 , 周期性调用,轮询某个返回值. 完成后调用函数3
...

方法一:循序
$.ready 里调用 函数1
函数1 里面某个 if里 调用 函数2
函数2 里面某个 if里 调用 函数3

方法二:回调
$.ready 里调用 函数1 ,
函数2 函数3 作为参数传递
某个 if里 调用函数2
函数3作为参数传递

方法三:jquery when-then

$.when
{
    函数1
}.then{
    $.when
    {
        函数2
    }.then{
        $.when
        {
            函数3
        }.then{

        }        
    }
}

像这种每个任务都是非阻塞的, 各各任务之间又都是同步的,该怎么写最清晰?


可以使用 Async.js 的eachSeries函数,例如:

var func1 = function (callback) {
    setTimeout(function () {
        log('func1');
        callback();
    }, 3000); // 模拟3秒的请求
};

var func2 = function (callback) {
    setTimeout(function () {
        log('func2');
        callback();
    }, 2000); // 模拟2秒的请求
};

var func3 = function (callback) {
    setTimeout(function () {
        log('func3');
        callback();
    }, 5000); // 模拟5秒的请求
};

async.eachSeries([func1, func2, func3], function (func, callback) {
    func(callback);
}, function(err) {
    log('all OK');
});

链接:http://jsfiddle.net/wenyi/ax3vsLe3/

详细使用看文档说明。

【热门文章】
【热门文章】