var genAsyncTask2 = (val, time) => {      return () => {        return new Promise(function (resolve, reject) {          let timer = setTimeout(() => {            clearTimeout(timer);            resolve(val);          }, time);        });      }    }      // 工作队列    var taskArr = [      genAsyncTask2('第1个异步工作,工夫为2秒', 2000), genAsyncTask2('第2个异步工作,工夫为1秒', 1000),      genAsyncTask2('第3个异步工作,工夫为0.8秒', 800), genAsyncTask2('第4个异步工作,工夫为2.5秒', 2500)    ];        function *genFun(taskArr){      for(let i = 0 , len = taskArr.length; i < len; i++){        yield taskArr[i]().then(res => {          console.log('genSync', res);          return res;        });      }    }      /**     * 主动执行generate函数的next,并保障执行程序     * @param generateFn generate函数     * @param params 执行generate函数所需参数     */    function generateAutoExec(generateFn, ...params) {      var g = generateFn(...params);        var next = function (res) {        if (res.done || typeof res.value == 'undefined') return res.value;        res.value.then((data) => {          console.log('data', data);          next(g.next(data));        }).catch((err) => {          console.error(err);          next(g.throw(err));        });      }        next(g.next());    }      generateAutoExec(genFun, taskArr);