code: function handleActions(handlers, defaultState, ctx) {
    var reducers = (0, _keys2.default)(handlers).map(function (type) {
      return handleAction(type, handlers[type], ctx);
    });
    // 将 reducer 包装成调用链，这里有个问题：
    // 由于这个链式调用并不保障每次 reducers 对 state 进行更新时，链内只有一个 reducer 响应 actionType。
    // 导致的结果是如果有多个 reducer 对同一 actionType 进行响应的话，无法保证这些 reducers 之间的调用顺序。
  
    // 更新：
    // 这样做的目的是因为，一般对于同一个 actionType 允许有多个 reducer 进行响应，而这些 reducers 每个都负责维护不同的 state 结构，故当多个 reducer 对同一 actionType 进行响应时，reducers 的调用顺序无关紧要。
    var reducer = reduceReducers.apply(undefined, (0, _toConsumableArray3.default)(reducers));
    return function () {
      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
      var action = arguments[1];
      return reducer(state, action);
    };
  }
docs: 无序链式调用 handlers 中的 reducer ，所有 reducer 维护同一个 state
  
  @param {{ actionType:reducer }} handlers
  @param {any} defaultState
  @param {any} ctx 执行  handle 的上下文
  @returns