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

如何正确实现基于request库的fetchDataForUser异步回调函数?

实现fetchDataForUser函数的方案

以下是基于request库的完整实现,包含完整的错误处理和数据提取逻辑:

const request = require('request');

const fetchDataForUser = function(url, username, callback) {
  request.get(url, (error, response, body) => {
    // 处理网络请求错误
    if (error) {
      return callback(error, null);
    }

    // 校验HTTP响应状态
    if (response.statusCode !== 200) {
      return callback(new Error(`请求失败,状态码:${response.statusCode}`), null);
    }

    // 解析JSON响应体,处理解析失败情况
    let parsedData;
    try {
      parsedData = JSON.parse(body);
    } catch (parseErr) {
      return callback(new Error(`JSON解析错误:${parseErr.message}`), null);
    }

    // 查找目标用户的数据
    const targetUser = parsedData.find(user => user.username === username);
    if (!targetUser) {
      return callback(new Error(`未找到用户 "${username}" 的数据`), null);
    }

    // 提取胜负数据(根据实际API返回结构调整字段)
    const userStats = {
      wins: targetUser.wins,
      losses: targetUser.losses,
      draws: targetUser.draws || 0 // 可选:处理可能缺失的字段
    };

    // 成功返回结果
    callback(null, userStats);
  });
};

关键说明

  • 错误分层处理:覆盖了网络故障、HTTP请求失败、JSON解析错误、用户不存在四种常见错误场景,确保每个错误都能通过回调传递给调用方
  • 异步逻辑适配:完全遵循request库的回调式异步模式,符合题目要求的异步函数设计
  • 数据兼容性:假设API返回的是包含用户对象的数组,每个用户对象包含username、wins、losses等字段;如果实际API结构不同,只需调整find的匹配条件和userStats的字段提取逻辑即可
  • 边界情况处理:对可能缺失的字段(如draws)设置默认值,避免返回undefined

内容的提问来源于stack exchange,提问作者questionMan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:50:29