Я хочу, чтобы функция async работала параллельно для цикла .map.
Также, когда я называю это, как показано ниже, я получаю «Обещание», например
console.info(getExchangeRate(variable));
Привет, я пытаюсь запустить функцию Async в NodeJS, где внутри она выполняет некоторые вычисления параллельно.
const getExchangeRate = async (orderBaseCurrency) => {
try {
const exchangeRate = await axios.get(`http://api.example.com`);
const data = exchangeRate.data.data.rates;
const usd = data.usd;
const aud = data.aud;
// loop through above with the calc below in parallel
const decimalEntry = new Decimal(1);
const answer = new Decimal(decimalEntry.times(orderAmount).toFixed(18, Decimal.ROUND_HALF_UP));
return answer.toPrecision();
//^^ loop
} catch (error) {
console.error(error);
console.info(error);
}
}
Что ты имеешь в виду? Я использовал его в первом запросе, например, exchangeRate.
Да, поскольку вы await
используете асинхронную функцию в getExchangeRate
, это также делает getExchangeRate
функцией async
hronous по необходимости. Фактически, вы аннотировали это как таковое. Значит, вам нужен и await getExchangeRate
. Он не может внезапно стать синхронным.
Я немного запутался. Я понимаю, что мне нужно дождаться exchangeRate. Но как мне дождаться функции getExchangeRate? Спасибо
Так же, как и await axios.get
. await getExchangeRate(variable)
.
Но вы не можете использовать await вне функции async?
Да, любая функция await
, выполняющая функцию, тоже должна быть async
, так оно и есть. В качестве альтернативы используйте возвращенное обещание и добавьте обратный вызов .then
. То же самое, но в других обозначениях.
Ах хорошо. Это причина, по которой сама функция возвращает обещание? Как получилось, что просто вызов функции, обычно находящейся ниже, нормально, но не при ее экспорте. Также можете ли вы подтвердить, правильно ли я объявил, что функция работает параллельно? Ваше здоровье
Если это функция
async
, вам нужно ееawait
.