Jak wybrać plik JSON do korzystania z wielu wywołań interfejsu API

0

Pytanie

Hej, używam promise, aby wyodrębnić 2 różnych wywołań interfejsu API, które oba zwracają pliki o podobnych/takich samych danych.

Próbuję użyć jednego z wywołań interfejsu API do wyświetlania wielu pokoi (bilans 2 torebki), który dobrze pracował, kiedy był tylko jeden wywołanie API, robiłem to tak:

const rewardWallet = data.result[0];
const rewardBalance = rewardWallet.balance;

Tak więc, data.result[0] wybierać wynik, a następnie pierwszy tablica (0), a następnie dane z "równowagi". Ale teraz, gdy są 2 połączenia API, "wynik" jest pod "0", i nie mogę zrozumieć, jak wybrać górny poziom.

Link do wyników zwraca API

Dodałem drugie wywołanie API, podobny do tego:

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) {
    console.log(data);
}).catch(function (error) {
    console.log(error);
});

Będę wdzięczny za każdą pomoc.

api fetch fetch-api javascript
2021-11-22 12:22:47
1

Najlepsza odpowiedź

0

Widać Promise.all aby zapewnić wykonanie kwerendy, a następnie pracować z odpowiedzią po tym, jak wszystkie obietnice zostaną spełnione. Zobacz poniżej, dodałem kilka fikcyjnych funkcji, które naśladują wywołania interfejsu API, które po prostu zwracają obiekt z kwotą.

const fetchWalletOne = () => {
  return new Promise((resolve) => {
    resolve({ amount: 1 });
  });
};

const fetchWalletTwo = () => {
  return new Promise((resolve) => {
    resolve({ amount: 5 });
  });
};

async function getData() {
  const [walletOne, walletTwo] = await Promise.all([
    fetchWalletOne(),
    fetchWalletTwo()
  ]);

  console.log(walletOne, walletTwo);
  console.log(walletOne.amount + walletTwo.amount);
}

getData();
2021-11-22 12:28:02

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................