code: function (thisArg, index, context, err, data) {
      if (err) {
        this.runErrorHandlers(err, context, thisArg);
        return this;
      }
  
      var steps = this.steps;
      var flows = this.flows;
      var step = steps[index.stepIndex];
      var flow = flows[step];
  
      if (index.flowIndex >= flow.length) {
        // 当前步骤中的函数已经执行完毕
        if (index.stepIndex < steps.length - 1) {
          // 还有待执行的步骤
          index.stepIndex += 1;
          index.flowIndex = 0;
          step = steps[index.stepIndex];
          flow = flows[steps[index.stepIndex]];
        } else {
          // 所有的函数已经执行完毕
          return this;
        }
      }
  
      var curr = flow[index.flowIndex++];
      var nextFn = this.next.bind(this, thisArg, index, context);
      var nextToFn = this.nextTo.bind(this, thisArg, index, context);
  
      try {
        curr.call(thisArg, context, nextFn, nextToFn, data);
      } catch (err) {
        this.runErrorHandlers(err, context, thisArg);
      }
  
      return this;
    }
docs: 执行当前步骤的下一个方法。
  如果当前步骤的方法都已经执行完毕，并且还有下一个步骤，会自动执行下一个步骤的方法。
  
  @private
  @param {Object} index 当前执行的位置信息
  @param {Any} context 上下文对象，每个步骤的函数都会接受到这个参数
  @param {Error|String} err 错误信息，如果调用`next()`的时候，第一个参数非空，则会执行错误处理函数。
  @param {Any} data 需要传递到下一个函数的数据
  @returns {StepFLow}