NodeJS异步等待功能

时间:2020-04-26 08:12:35

标签: node.js function async-await request-promise

我想做一个使用Bing Translator的翻译器功能。我可以做到这一点,并且效果很好,但是当我尝试从代码中调用它时,并期望输出结果,我什么都没有。我发现了原因,因为实际的代码没有等待翻译器返回文本。我尝试使用异步等待,但无法正常工作。请帮助我。

我想在每个foreach元素中调用翻译器的代码。

        let msg = {};
        error.details.forEach( e => {
           const translated = translate("hello world");
           console.log(translated)
           msg[e.path] = translated;
        });
        return res.status(400).send(msg)

这是translate.js文件:

const request = require('request');
const uuid = require('uuid');

async function translate(string) {
    var key_var = process.env.T_KEY;
    var endpoint_var = process.env.T_END;

    let options = {
        method: 'POST',
        baseUrl: endpoint_var,
        url: 'translate',
        qs: {
        'api-version': '3.0',
        'to': ['hu']
        },
        headers: {
        'Ocp-Apim-Subscription-Key': key_var,
        'Content-type': 'application/json',
        'X-ClientTraceId': uuid.v4()
        },
        body: [{
            'text': 'hello world'
        }],
        json: true
    };

    request(options, async function(err, res, body){
        const response = await body[0].translations[0].text;
        return response;
    });
}

module.exports.translate = translate;

请不要判断我,我正在通过编写代码来学习整个新事物,但在这里我陷入了困境。我读了许多关于诺言的文章,但我听不懂。我希望有人可以帮助我一点。预先感谢。

0 个答案:

没有答案