>  Q&A  >  본문

javascript - 怎么能把 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{

        }        
    }
}

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

PHP中文网PHP中文网2749일 전310

모든 응답(1)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-10 14:43:12

    可以使用 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/

    详细使用看文档说明。

    회신하다
    0
  • 취소회신하다