Привет всем, я хочу передать переменную функции перевода google-translate-api. Как мне это сделать.
translate(txt, {from: 'en', to: 'ja'}).then(res => {
var translated=res.text;
return translated;
});
consol.log(translated);
Но в результате я получил неопределенный Подскажите пожалуйста, как вернуть переведенный текст
Вы пытаетесь зарегистрировать "переведенную" переменную в неправильной области. Вам следует переместить функцию console.info в метод обратного вызова (я имею в виду в функцию «затем»).
translate(txt, {from: 'en', to: 'ja'}).then(res => {
consol.log(res.text);
});
Но если вы хотите использовать переведенное значение вне функции, вы можете использовать "await" (дополнительная информация: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await)
async function myTranslateFn(text){
var res = await translate(text, {from: 'en', to: 'ja'});
return res.text;
}
var result = myTranslateFn("flower");
Функция перевода @Afzal является асинхронной, поэтому вы можете использовать для нее ключевое слово "await". Я добавил к своему ответу еще один фрагмент кода
Привет, #Sercan ozen Еще один вопрос.
Да конечно, вы можете спросить
Как передать переменную в .then функция означает, как получить исходный текст, который будет переведен в функцию .then. в функции перевода цикла for получает случайное значение индекса массива, а затем переводит. Я хочу получить как переведенный текст, так и текст для перевода в функции .then. Вышеупомянутая функция работает для однократного выполнения, но не в цикле for. В цикле For txt, который мы передаем для перевода Получить только последнее значение индекса массива
Вы можете создать обещание, которое обертывает метод перевода, и вы можете отправить два параметра с помощью метода разрешения. developer.mozilla.org/tr/docs/Web/JavaScript/Reference/… PS: метод translate тоже обещание
@ Sercanözen, я хочу вызвать translate () в цикле. Я пробовал использовать async await, как вы показали .. Но получаю ошибку Плохой запрос ..
@JaynaTanawala, вы передаете ограничение на использование api translate в своем цикле -> cloud.google.com/translate/quotas?hl=en. Возможно, вы сможете немного поспать между переводами.
@ Sercanözen, я вызываю api в setTimeout () на 5 секунд. Сначала я получаю журналы преобразованного текста, но после нескольких вызовов из translate () он начал бросать Слишком много запросов с кодом: неверный запрос.
@JaynaTanawala Я думаю, это та же ошибка, поэтому речь идет об ограничениях api. Вам нужно увеличить таймаут.
Оберните вызов translate функцией и передайте обратный вызов внешней функции
callTranslate(txt, fn) {
translate(txt, {from: 'en', to: 'ja'}).then(res => {
fn(res.text);
});
}
Теперь, когда вам нужно вызвать API перевода, сделайте это так:
callTranslate('yourText', (translated) => { console.info(translated); })
// add any logic in the callback itself if you want to further process the result
Подскажите, пожалуйста, как получить переведенное текстовое значение из функции .then