You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MovieDB API遇404错误时,如何用JS刷新页面或重跑代码

解决MovieDB API 404错误的重试逻辑实现

原代码未处理HTTP错误状态,也没有针对无效ID的重试机制。以下是修改后的实现,包含404自动重试、最大重试次数限制,同时完善了异常处理:

// 设定最大重试次数,防止无限循环
const MAX_RETRIES = 3;

// 生成随机电影ID(可根据MovieDB实际ID范围调整数值)
function getRandomMovieId() {
  return Math.floor(Math.random() * 10000) + 1;
}

// 带重试逻辑的API请求函数
async function fetchMovieGenres(retryCount = 0) {
  try {
    const movieId = getRandomMovieId();
    // 替换为你的MovieDB API地址,记得带上API密钥
    const apiUrl = `https://api.themoviedb.org/3/movie/${movieId}?api_key=YOUR_API_KEY`;
    
    const response = await fetch(apiUrl);
    
    // 遇到404且未达最大重试次数时,递归重试
    if (response.status === 404 && retryCount < MAX_RETRIES) {
      console.log(`ID ${movieId}无效,第${retryCount + 1}次重试中...`);
      return fetchMovieGenres(retryCount + 1);
    }
    
    // 处理其他非成功的HTTP状态
    if (!response.ok) {
      throw new Error(`请求失败,状态码: ${response.status}`);
    }
    
    const data = await response.json();
    const genres = data.genres;
    
    const userGenre = document.getElementById("input").value;
    genres.forEach(genre => {
      console.log(genre.name);
      // 这里可添加用户输入与影片类型的匹配逻辑
    });
    
    return data;
  } catch (err) {
    console.error(`已重试${MAX_RETRIES}次,请求仍失败:`, err);
    // 重试失败后可提示用户
    alert("无法获取有效影片数据,请稍后再试");
  }
}

// 调用函数启动请求
fetchMovieGenres();

核心逻辑说明

  • 重试次数控制:通过MAX_RETRIES限制重试次数,避免无限请求导致API限流或页面卡顿
  • 无效ID检测:捕获404状态码后自动触发重试,直到拿到有效数据或达到重试上限
  • 异常处理:覆盖非404的HTTP错误(如500、401),避免程序崩溃
  • 代码拆分:将随机ID生成与请求逻辑分离,便于后续维护和调整ID范围

内容的提问来源于stack exchange,提问作者Rebja A.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:49:14