当前位置:首页 > 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
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js 实现跳转

js 实现跳转

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

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…