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

使用Promise.all调用多接口后如何选取指定JSON文件的数据

解决方案

Promise.all 返回的结果数组顺序和传入的请求顺序完全对应,你传入的第一个请求是批量查BNB余额的接口,第二个是单地址查指定代币余额的接口,最终拿到的data数组规则如下:

  • data[0] 对应第一个balancemulti接口的完整返回值
  • data[1] 对应第二个tokenbalance接口的完整返回值

原来取单个钱包余额的逻辑只需要新增层级取第一个接口的返回即可,示例代码如下:

// 取第一个接口返回的余额数组
const balanceList = data[0].result
// 两个钱包的BNB余额,注意接口返回原始值为wei单位,转成BNB需要除以1e18
const firstWalletBnb = balanceList[0].balance / 1e18
const secondWalletBnb = balanceList[1].balance / 1e18

// 若需要取第二个接口返回的指定代币余额,可直接按以下方式取值
const tokenBalance = data[1].result / 1e18

完整修改后的请求代码如下:

Promise.all([
    fetch('https://api.bscscan.com/api?module=account&action=balancemulti&address=0xa3968Fba9D45D52b6b978f575934364ac2d5774c,0x121F0a592a25A52E8834C87005CbF4db000010Af&tag=latest&apikey=key'),
    fetch('https://api.bscscan.com/api?module=account&action=tokenbalance&contractaddress=0x7b50c95f065dc48a0ecf8e5f992bf9bb9f4299c5&address=0x121F0a592a25A52E8834C87005CbF4db000010Af&tag=latest&apikey=key')
]).then(function (responses) {
    return Promise.all(responses.map(function (response) {
        return response.json();
    }));
}).then(function (data) {
    // 处理批量BNB余额查询结果
    const bnbBalances = data[0].result
    const wallet1Bnb = bnbBalances[0].balance / 1e18
    const wallet2Bnb = bnbBalances[1].balance / 1e18
    console.log('钱包1 BNB余额:', wallet1Bnb)
    console.log('钱包2 BNB余额:', wallet2Bnb)

    // 处理指定代币余额查询结果
    const tokenBal = data[1].result / 1e18
    console.log('钱包2对应代币余额:', tokenBal)
}).catch(function (error) {
    console.log('请求出错:', error);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:45:07