需要帮助使这个翻译功能与数组输入一起使用

时间:2015-06-08 23:14:17

标签: javascript arrays node.js asynchronous translate

我正在尝试输入一个字符串值数组并使用API​​转换它们然后将它们带回来并以相同的顺序显示数组。 我一直在尝试使用async.map函数来完成这项工作,但是我找不到任何资源或示例来帮助我理解如何正确地执行此操作。 这是我到目前为止所做的,

    var request = require('request');
    var async = require('async');
    var array = ["This", "wedding", "is", "horse shit"]

    var translate = function translate(inText, doneCallback) {
        request({
            method: 'POST',
            url: "https://lc-api.sdl.com/translate",
            headers: {
                 "Content-type": 'application/json',
                  "Accept": 'application/json',
                  "Authorization": 'LC apiKey=api_key_here'
            },
            body: {
                to: 'fra',
                from: 'eng',
                text: inText
            },
            json: true
        }, doneCallback(null, body.translation)));
    }
    async.map(array, translate, function (err, result) {
        if (err) {
            console.log("error");
        } else {
            console.log(result);
        }
    });

任何帮助指出正确的方法,或更好的方式是非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为错误在translate函数中,即时调用回调,你不等待异步回答。尝试这样的事情:

funcion translate(inText, doneCallback) {
    $.get({ /* params */ }, function(response) {
        // Make the external callback only in the callback of the request
        doneCallback(null, response.translation);
    }); 
});