import Vue from 'vue'
// 增强版的emit事件：可以阻止默认行为+返回一个等待的promise
Vue.prototype.sdEmit = function(evntName, ...rest) {
  const evt = {
    defaultPrevented: false,
    preventDefault() {
      this.defaultPrevented = true
    },
    waitUntil(p) {
      this.wait = p.then((data) => {
        // 把promise返回的值通过evt返回
        evt.resolvedValue = data
        return evt
      })
    },
  }
  evt.wait = Promise.resolve(evt)
  this.$emit(evntName, evt, ...rest)
  return evt.wait
}
