Да, вы можете использовать Promise.all для объединения ваших звонков. Ниже показано, как вы можете это сделать ...
(я использую setTimouts вместо ваших запросов на выборку)
const functionA = async () => {
await new Promise(resolve => {
setTimeout(() => { resolve(); }, 2000);
});
return "A";
};
const functionB = async () => {
await new Promise(resolve => {
setTimeout(() => { resolve(); }, 3000);
});
return "B";
};
const getResults = async () => {
const result = await Promise.all([functionA(), functionB()]);
return result;
};
getResults().then(result => console.log(result));
Просмотр https://codesandbox.io/s/blue-lake-qupp7?file= / src / index . js
Чтобы перевести это на ваш пример, мы можем поэтому сделать ...
// promise
function loadWeather(lat, lon) {
Promise.all([
API.getAddress(lat, lon),
API.getForecast(lat, lon)
]).then(([address, forecast]) => {
this.address = address.name;
this.forecast = forecast;
});
}
// or async/await
async function loadWeather(lat, lon) {
const [address, forecast] = await Promise.all([
API.getAddress(lat, lon),
API.getForecast(lat, lon)
]);
this.address = address.name;
this.forecast = forecast;
}