docs: function (that, pipe) {
                      var callback;
  
                      if (!locked && !stop) {
  
                          if (firing) {
                              // 存储上当前运行
                              fireQueue.push(fireIndex);
                          }
  
                          fireIndex = 0;
                          firing = fired = true;
  
                          for (; fireIndex < fireLength; fireIndex++) {
                              callback = list[fireIndex];
  
                              // 是否以链式返回作为参数传入
                              if (chain) {
                                  pipe = callback.call(that, pipe);
                              } else {
                                  callback.apply(callback, arguments);
                              }
  
                              if (locked || stop) {
                                  fireQueue = [];
                                  break;
                              }
                          }
  
                          if (fireQueue.length) {
                              // 还原fireIndex
                              fireIndex = fireQueue.pop();
                          } else {
                              // 全部回调队列执行完成
                              stop = firing = false;
                          }
                      }
  
                      return this;
                  }