Есть код, который делает запрос к стороннему API (в данном случае это API переводчика)
import unirest from 'unirest'
export const translateText = async (from, to, text) => {
let req = unirest(
'GET',
'https://translated-mymemory---translation-memory.p.rapidapi.com/api/get'
)
// необходимые параметры для API запроса
req.query({
mt: '1',
onlyprivate: '0',
de: 'global-mangal@yandex.ru',
langpair: `${from}|${to}`,
q: text,
})
// api ключи и заголовки
req.headers({
'x-rapidapi-host':
'translated-mymemory---translation-memory.p.rapidapi.com',
'x-rapidapi-key': 'f0a80bec21msh80b014d3afb7629p1966c2jsn12fd481ec155',
useQueryString: true,
})
// выдача результата
await req.end(async function (res) {
if (res.error) throw new Error(res.error)
await req.json(res.body.matches[0].translation)
console.log('output from translator.js: ', res.body.matches[0].translation)
return res.body.matches[0].translation
})
}
Есть код из фронта, который использует данный код:
const translate = async () => {
const txt = await translateText('ru', 'en', 'Привет, как дела?')
console.log('output from app.js', txt)
}
translate()
Результат кода такой:
Вопрос: почему значение переменной
txt undefined? Почему await в данном случае не ждет результата выполнения функции
translateText? И как решить проблему лучше всего в данном случае, если мне надо, код не выполнялся до тех пор, пока переменная txt не получит результат? Как бы вы решили проблему на моем месте?