当前位置:首页 > JavaScript

js实现单请求

2026-02-03 06:49:41JavaScript

实现单请求的 JavaScript 方法

在 JavaScript 中实现单请求通常指确保某个操作(如数据加载或提交)仅执行一次,避免重复请求。以下是几种常见场景的实现方式:

使用标志位控制请求

通过布尔变量标记请求状态,防止重复触发:

let isRequesting = false;

function fetchData() {
  if (isRequesting) return;
  isRequesting = true;

  fetch('https://api.example.com/data')
    .then(response => response.json())
    .finally(() => {
      isRequesting = false;
    });
}

基于 Promise 的缓存

对异步请求结果进行缓存,后续调用直接返回缓存的 Promise:

js实现单请求

let requestPromise = null;

function getData() {
  if (!requestPromise) {
    requestPromise = fetch('https://api.example.com/data')
      .then(response => response.json());
  }
  return requestPromise;
}

防抖(Debounce)技术

短时间内多次调用时,仅执行最后一次请求:

function debounce(func, delay) {
  let timeoutId;
  return function() {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => func.apply(this, arguments), delay);
  };
}

const fetchData = debounce(() => {
  fetch('https://api.example.com/data');
}, 500);

AbortController 取消重复请求

利用 AbortController 中止之前的未完成请求:

js实现单请求

let controller = null;

function fetchData() {
  if (controller) controller.abort();
  controller = new AbortController();

  fetch('https://api.example.com/data', {
    signal: controller.signal
  }).catch(err => {
    if (err.name !== 'AbortError') throw err;
  });
}

单例模式封装

将请求逻辑封装为单例,确保全局唯一实例:

class ApiService {
  constructor() {
    if (!ApiService.instance) {
      ApiService.instance = this;
    }
    return ApiService.instance;
  }

  fetchData() {
    return fetch('https://api.example.com/data');
  }
}

const api = new ApiService();
api.fetchData();

根据具体需求选择合适的方法:

  • 简单场景可用标志位或 Promise 缓存
  • 用户频繁操作时建议防抖或 AbortController
  • 需要全局控制时考虑单例模式

标签: js
分享给朋友:

相关文章

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js实现图片滚动

js实现图片滚动

图片滚动的实现方法 使用CSS动画实现 通过CSS的animation和@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。 <style> .scr…

js实现左右滑动

js实现左右滑动

实现左右滑动的 JavaScript 方法 监听触摸事件 通过 touchstart、touchmove 和 touchend 事件来检测用户的手势操作。记录触摸的起始位置和移动距离,判断滑动方向。…