首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

window.fetch的事件侦听器

window.fetch 是一个用于发起网络请求的现代 JavaScript API

以下是如何为 window.fetch 添加事件侦听器的示例:

代码语言:javascript
复制
// 自定义 fetch 事件
class FetchEvent {
  constructor(fetchPromise) {
    this.fetchPromise = fetchPromise;
  }

  then(onFulfilled, onRejected) {
    return this.fetchPromise.then(onFulfilled, onRejected);
  }

  catch(onRejected) {
    return this.fetchPromise.catch(onRejected);
  }
}

// 为 window.fetch 添加事件侦听器
const originalFetch = window.fetch;
window.fetch = (input, init) => {
  const fetchPromise = originalFetch(input, init);

  // 创建一个新的 FetchEvent 实例
  const fetchEvent = new FetchEvent(fetchPromise);

  // 触发自定义事件
  window.dispatchEvent(new CustomEvent('fetch', { detail: fetchEvent }));

  // 返回原始 fetchPromise
  return fetchPromise;
};

// 监听 fetch 事件
window.addEventListener('fetch', (event) => {
  const fetchEvent = event.detail;

  fetchEvent.then((response) => {
    console.log('请求成功:', response);
  }).catch((error) => {
    console.error('请求失败:', error);
  });
});

在这个示例中,我们首先创建了一个 FetchEvent 类,用于封装 fetch 请求的 Promise。然后,我们重写了 window.fetch 函数,使其在发起请求时触发一个名为 fetch 的自定义事件。最后,我们监听这个自定义事件,并在事件处理函数中处理请求的成功和失败情况。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • JavaSwing_8.1:焦点事件及其监听器 - FocusEvent、FocusListener

    低级别事件指示Component已获得或失去输入焦点。 由组件生成此低级别事件(如一个TextField)。 该事件被传递给每一个FocusListener或FocusAdapter注册,以接收使用组件的此类事件对象addFocusListener方法。 ( FocusAdapter对象实现FocusListener接口。)每个此类侦听器对象获取此FocusEvent当事件发生时。 有两个焦点事件级别:持久性和暂时性的。 永久焦点改变事件发生时焦点直接移动从一个组件到另一个,例如通过到requestFocus的(呼叫)或作为用户使用TAB键遍历组件。 当暂时丢失焦点的组件的另一个操作,比如释放Window或拖动滚动条的间接结果一时焦点变化的事件发生。 在这种情况下,原来的聚焦状态将被自动一旦操作完成恢复,或者,对于窗口失活的情况下,当窗口被重新激活。 永久和临时焦点事件使用FOCUS_GAINED和FOCUS_LOST事件id传递; 水平可以使用isTemporary()方法的事件区分开来。 如果未指定的行为将导致的id任何特定的参数FocusEvent实例不是从范围FOCUS_FIRST到FOCUS_LAST

    01
    领券