为什么输出在预期显示“Bienvenue”时显示“Promise { }”
const translate = require('google-translate-api');
async function translateSentence(sentence, languebase, languagetranslation) {
var sentenceTranslated = await translate(
sentence,
{ from: languebase, to: languagetranslation });
return sentenceTranslated.text;
}
var Translatedtext = translateSentence("Welcome", "en", "fr");
console.log(Translatedtext);
更新:
我正在尝试将翻译后的数据返回为 JSON,这就是我想要做的:
data = new Object();
data.Translatedtext = Translatedtext;
var string = JSON.stringify(data);
console.log(JSON.parse(string));
输出显示为 { Translatedtext: {} }
,我期望类似 { Translatedtext: {Bienvenue} }
最佳答案
因为 async
函数返回 Promise,所以 Translatedtext
是对 Promise 的引用,当您将其转储出来时,您会看到该 Promise 的详细信息,包括事实正在等待处理。
如果您想获得结果,则必须await
(或使用then
):
var Translatedtext = await translateSentence("Welcome", "en", "fr");
// ------------------^
console.log(Translatedtext);
(如果拒绝则处理异常),或
translateSentence("Welcome", "en", "fr")
.then(Translatedtext => {
console.log(Translatedtext);
})
.catch(err => {
// Handle the fact an error occurred
});
请注意,要使用 await
,您必须处于 async
函数中。
关于javascript - 为什么它显示 Nodejs 的待处理 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47378903/