当前位置:首页 > 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:

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 中止之前的未完成请求:

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();

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

js实现单请求

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

标签: js
分享给朋友:

相关文章

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js实现左右滑动

js实现左右滑动

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

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…