Как использовать данные, полученные из двух ответов, и использовать их в третьей выборке? - PullRequest
0 голосов
/ 18 июня 2020

Я нажимаю две конечные точки API, чтобы получить totalPolice и totalZone, и я sh, чтобы использовать эти две переменные в третьем ответе, полученном из третьего запроса выборки.

// First API to get totalPolice
fetch("url1").then(
    res=>{
        res.json().then(
            data=>{
                    totalPolice = data.length
            }
        )
    }
);
// Second API to get total Zones
fetch("url2").then(
    res=>{
        res.json().then(
            data=>{
                    totalZone = data.length
            }
        )
    }
);
// Third API that uses totalPolice and totalZone variable
fetch("url3").then(
    res=>{
        res.json().then(
            data=>{
                    data.length = totalPolice + totalZone // dummy equation
            }
        )
    }
);

Проблема, с которой я столкнулся, заключается в том, что эти запросы на выборку выполняются асинхронно, и я sh заставляю мою третью выборку ждать до завершения первых двух запросов sh, чтобы я мог использовать данные в моем третьем запросе. Я новичок в javascript, поэтому я просто хотел знать, есть ли хороший способ достичь этого

Ответы [ 2 ]

1 голос
/ 18 июня 2020
async function getData() {
    res1 = await fetch(url1)
    totalPolice = await res1.json()

    res2 = await fetch(url2)
    totalZone = await res2.json()

    res3 = await fetch(url3)
    data3 = await res3.json()

    data3.length = totalPolice + totalZone
}

Не тестировал. Надеюсь, это поможет.

0 голосов
/ 18 июня 2020

Простой способ сделать это так: я думаю

async function getAllData(){
    firstApi = await (await fetch('url1')).json();
    secondApi = await (await fetch('url2')).json();
    finalCall = await (await fetch('url from first and second')).json();
    return finalCall;
}

тогда ваша функция вернет обещание, и вы можете отразить изменения в пользовательском интерфейсе в блоке then этого asyn c функция

...