使用Promise实现数组循环异步处理转同步

js中数组循环调用异步方法,想顺序执行怎么办?
nodejs实现时,我习惯使用async模块的eachSeries方法,依次对数组中item操作,数据全部处理完毕之后继续下面的业务;随便链个async模块使用教程地址:https://blog.csdn.net/limite_god/article/details/41486901
可喜可贺的是ES6标准中包括了Promise对象;阮大神的教程地址:http://es6.ruanyifeng.com/#docs/promise
今天写代码,想实现对数组中数据循环处理,分别调用异步函数,全部操作完毕之后再继续业务处理(回显提示信息什么的);之前没用过Promise对象,先简单实现个demo;

    //测试异步流程控制
    let myData = ['a','b','c','d','e'];
    //异步处理方法,返回Promise对象
    let f1 = function(i){
      return new Promise(function (resolve, reject) {
        setTimeout(function () {
          console.log("一个异步操作,处理数据:" +myData[i]);
          resolve();
        }, 500);
      });
    };
    let loopNum = 0;//循环标识
    //定义流程控制函数,递归实现依次调用f1
    let asyncControl = function(){
      if (loopNum < myData.length){//
        f1(loopNum).then(function () {
          loopNum++;
          asyncControl();
        });
      }else{
        console.log('数据全部处理完了');
      }
    }
    //执行流程控制函数
    asyncControl();

执行结果

使用Promise实现数组循环异步处理转同步_第1张图片

第一次用Promise对象实现异步流程控制,感觉不错~

你可能感兴趣的:(es6,js,es6,Promise,异步)