2015-06-08 2 views
1

Я пытаюсь ввести массив строковых значений и перевести их с помощью 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); 
     } 
    }); 

Любая помощь в указании на правильный способ сделать это, или лучший способ очень ценится.

ответ

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); 
    }); 
}); 
Смежные вопросы