0

我正在使用 Coingecko API 获取价格数据和时间(Unix)以将其输出到图表中,但我使用的端点仅支持每个请求一个 ID。

document.onreadystatechange = async () => {
  if (document.readyState === "complete") {
    const coin = "bitcoin";
    const currency = "brl";




const response = await fetch(

  `https://api.coingecko.com/api/v3/coins/${coin}/market_chart?vs_currency=${currency}&days=10&interval=hourly
  `
);

const data = await response.json();



const prices = data.prices.map((e) => e[1]);
const date = data.prices.map(i => i[0]);

我需要该功能也对 solana、cardano、ripple、dash 和 litecoin 执行相同的操作

4

1 回答 1

0

如果您的 API 仅支持每个请求一个 ID,并且您需要多个 ID,那么您将需要发出多个请求。

并行执行它们并等待所有操作完成后再继续的一种方法是

const data = await Promise.all([
    fetch(endpoint1).then(response => response.json()), 
    fetch(endpoint2).then(response => response.json()), 
    fetch(endpoint3).then(response => response.json())
]);

以上将导致data包含每个端点的响应数组——data[0]将是来自端点1、data[1]来自端点2等的json。您需要逐步了解它们以获取每个 ID 的价格和日期(显然 Promise.all() 尝试将所有响应合并为一个是没有意义的,因为您没有办法知道哪个价格与哪个 ID 对应。)

于 2022-02-02T21:56:58.023 回答