Asynchronous Loop of jQuery Deferreds (promises)

后端 未结 6 1939
执笔经年
执笔经年 2020-12-08 08:21

I am trying to create what I think is referred to as a \"Waterfall\". I want to sequentially process an array of async functions (jQuery promises).

Here\'s a contr

6条回答
  •  感情败类
    2020-12-08 08:45

    I'd try using $().queue instead of $.Deferred here. Add the functions to a queue, and only call the next one when ready.

    function doTask(taskNum, next){
        var time = Math.floor(Math.random()*3000);
    
        setTimeout(function(){
            console.log(taskNum);
            next();
        },time)
    }
    
    function createTask(taskNum){
        return function(next){
            doTask(taskNum, next);
        }
    }
    
    var tasks = [1,2,3];
    
    for (var i = 0; i < tasks.length; i++){
        $(document).queue('tasks', createTask(tasks[i]));
    }
    
    $(document).queue('tasks', function(){
        console.log("all done");
    });
    
    $(document).dequeue('tasks');
    

提交回复
热议问题