代码之家  ›  专栏  ›  技术社区  ›  Kamalakannan J

Javascript:在不带库的情况下串联(或顺序)运行异步任务

  •  5
  • Kamalakannan J  · 技术社区  · 8 年前

    我想在循环中运行一些异步任务,但它应该按顺序(一个接一个)执行。它应该是vanilla JS,而不是任何库。

    var doSome = function(i) {
       return Promise.resolve(setTimeout(() => {
          console.log('done... ' + i)
       }, 1000 * (i%3)));
    }
    
    var looper = function() {
       var p = Promise.resolve();
    
       [1,2,3].forEach((n) => {
          p = p.then(() => doSome(n))
       })
    
       return p;
    }
    
    looper();
    

    电流输出:

    calling for ...1
    calling for ...2
    calling for ...3
    Promise {<resolved>: 8260}
    done... 3
    done... 1
    done... 2
    

    预期输出:

    calling for ...1
    calling for ...2
    calling for ...3
    Promise {<resolved>: 8260}
    done... 1
    done... 2
    done... 3
    

    注意:如果您尝试了,并且按照预期工作,请回答

    1 回复  |  直到 8 年前
    推荐文章