javascript - 为什么它显示 Nodejs 的待处理 promise

标签 javascript node.js npm

为什么输出在预期显示“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/

相关文章:

javascript - 如何在 SnapshotStore 中水合项目名称

javascript - 我收到此错误 "No module: ngResource"

node.js - 如果第三个键为 true,则比较 mongodb 文档的两个键

javascript - 使用 TS 但不使用 NPM 在 Angular2 上进行开发

node.js - 什么是 package-lock.json?

php - 表单提交上的成功/错误消息未显示

javascript - 如何缩短代码或将其存储在数据文件中

node.js - npm 卡在 fetchMetadata -> 网络上

javascript - Node 只向客户端发送 html 内容,而不是发送整个 Vue 应用程序

node.js - 通过 npm 安装 Ionic