需要帮助使此翻译功能与数组输入一起使用
Need help making this translation function work with an array input
我正在尝试输入一个字符串值数组并使用 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);
}
});
非常感谢任何指出正确方法或更好方法的帮助。
我认为错误在translate
函数内,回调是即时调用的,你不用等待异步应答。尝试这样的事情:
funcion translate(inText, doneCallback) {
$.get({ /* params */ }, function(response) {
// Make the external callback only in the callback of the request
doneCallback(null, response.translation);
});
});
我正在尝试输入一个字符串值数组并使用 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);
}
});
非常感谢任何指出正确方法或更好方法的帮助。
我认为错误在translate
函数内,回调是即时调用的,你不用等待异步应答。尝试这样的事情:
funcion translate(inText, doneCallback) {
$.get({ /* params */ }, function(response) {
// Make the external callback only in the callback of the request
doneCallback(null, response.translation);
});
});