【问题标题】:How to multiply a value fetched from one API to the array of values fetched from other api?如何将从一个 API 获取的值乘以从另一个 API 获取的值数组?
【发布时间】:2021-08-11 20:10:22
【问题描述】:

一份合约由许多具有不同余额的代币组成。我正在使用 API 来获取有关数组中存在的令牌的信息。我得到的信息如下:

    "token_address": "0x2d30ca6f024dbc1307ac8a1a44ca27de6f797ec22ef20627a1307243b0ab7d09",
    "name": "Kylin Network",
    "symbol": "KYL",
    "decimals": "18",
    "balance": "123456789"
  }] 

我想使用每个代币的地址来调用另一个 api 以获取代币的当前价格并将其与上述信息中的余额相乘。这是我的代码:

var add = "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82"
var tokens = [];
fetch(`https://deep-index.moralis.io/api/account/erc20/balances?chain=bsc&chain_name=mainnet&address=${add}`, {
    method: 'GET',
    headers: {
        'X-API-KEY': 'unT7o....bgF6fVAgNW6AU',
        'Accept': '*/*',
    }
}).then(res => res.json()).then(json => json.map(item => {
    tokens.push(item.token_address);

    tokens.forEach((token) => fetch(`https://deep-index.moralis.io/api/token/ERC20/${token}/price?chain=bsc&chain_name=mainnet&providerUrl=https%3A%2F%2Fthrjqwgeodkr.usemoralis.com%3A2053%2Fserver`, {
        method: 'GET',
        headers: {
            'X-API-KEY': 'unT7...........rZhbgF6fVAgNW6AU',
            'Accept': '*/*',
        }
    }).then(res => res.json()).then(data => console.log(data.usdPrice)));
}))

我正在等待一些代币的承诺。代码有问题吗?

【问题讨论】:

    标签: node.js ethereum fetch-api smartcontracts


    【解决方案1】:

    该代码非常难以阅读。我建议使用异步等待方法,而不是使用承诺链来解决问题,以更易读的方式实现与承诺链相同的事情。下面是让你开始的,但我认为你需要先做更多的阅读/研究。

    var add = '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82'
    const fetchOne = await(
      await fetch(
        `https://deep-index.moralis.io/api/account/erc20/balances?chain=bsc&chain_name=mainnet&address=${add}`,
        {
          method: 'GET',
          headers: {
            'X-API-KEY': 'unT7o....bgF6fVAgNW6AU',
            Accept: '*/*',
          },
        },
      ),
    ).json()
    
    const tokens = fetchOne.map((item) => item.token_address)
    
    const data = await Promise.all(
      tokens.map((token) => {
        return fetch(
          `https://deep-index.moralis.io/api/token/ERC20/${token}/price?chain=bsc&chain_name=mainnet&providerUrl=https%3A%2F%2Fthrjqwgeodkr.usemoralis.com%3A2053%2Fserver`,
          {
            method: 'GET',
            headers: {
              'X-API-KEY': 'unT7...........rZhbgF6fVAgNW6AU',
              Accept: '*/*',
            },
          },
        ).json()
      }),
    )
    

    【讨论】:

      猜你喜欢
      • 2023-01-20
      • 1970-01-01
      • 2017-05-15
      • 2022-01-13
      • 2021-06-03
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多