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

如何在JavaScript中合并双API请求实现Android HTML应用首页数据展示

合并两个API请求并在首页展示数据的解决方案

核心思路:并行请求两个接口,合并数据后渲染UI

两个接口相互独立,并行发起请求能减少整体等待时间,等两个接口都返回数据后,将结果合并成一份数据集,再同步更新页面的各个展示模块。


前端实现代码(JavaScript)

假设你的HTML GUI是通过Android WebView加载的前端页面,用以下代码完成请求合并:

// 替换为你的实际基础URL
const baseUrl = "你的基础API地址";
const homeDataApi = `${baseUrl}api/android_app/home_data`;
const dayBookApi = `${baseUrl}api/android_app/day_book_reports`;

// 封装通用请求函数
function getApiData(apiUrl) {
  return fetch(apiUrl)
    .then(res => {
      if (!res.ok) throw new Error(`请求错误:${res.status}`);
      return res.json();
    });
}

// 并行发起两个请求
Promise.all([getApiData(homeDataApi), getApiData(dayBookApi)])
  .then(([homeResp, dayBookResp]) => {
    // 合并两份数据,按实际接口返回的字段名调整
    const allData = {
      // 首页原有数据
      walletBalance: homeResp.wallet_balance,
      notices: homeResp.notices,
      banners: homeResp.banners,
      // 新增的充值和佣金数据
      totalRecharge: dayBookResp.total_recharge,
      totalCommission: dayBookResp.total_commission
    };

    // 更新页面UI,示例:
    document.querySelector('#wallet-balance').textContent = allData.walletBalance;
    document.querySelector('#total-recharge').textContent = allData.totalRecharge;
    document.querySelector('#total-commission').textContent = allData.totalCommission;
    
    // 渲染公告、轮播图等其他模块...
  })
  .catch(err => {
    console.log('数据加载失败:', err);
    // 这里可以添加错误提示,比如显示页面内的错误提示框
  });

容错优化(可选)

如果希望某个接口失败时,不影响另一个接口的数据展示,改用Promise.allSettled:

Promise.allSettled([getApiData(homeDataApi), getApiData(dayBookApi)])
  .then(results => {
    // 处理首页数据
    if (results[0].status === 'fulfilled') {
      const homeData = results[0].value;
      // 渲染钱包余额、公告、轮播图
      document.querySelector('#wallet-balance').textContent = homeData.wallet_balance;
    } else {
      console.error('首页数据加载失败:', results[0].reason);
      // 显示首页数据加载失败的提示
    }

    // 处理充值佣金数据
    if (results[1].status === 'fulfilled') {
      const bookData = results[1].value;
      document.querySelector('#total-recharge').textContent = bookData.total_recharge;
      document.querySelector('#total-commission').textContent = bookData.total_commission;
    } else {
      console.error('充值佣金数据加载失败:', results[1].reason);
      // 显示该部分数据加载失败的提示
    }
  });

Android WebView配置注意事项

如果你的HTML页面是通过Android WebView加载的,需要确保WebView开启必要设置:

WebView webView = findViewById(R.id.your_webview_id);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
// 允许混合内容(若接口为HTTP、页面为HTTPS时需要)
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
// 允许网络访问
webView.setWebViewClient(new WebViewClient());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:15:34