如何将一个函数结果带入另一个函数

时间:2019-05-02 22:12:36

标签: node.js

我有两个职能。第一个是获取一段文本( orgText )并将其翻译成英文。结果在 res.text 之内。

我需要将 res.text 带到toneAnalyzer。现在,我已经输入了原始文本,只是为了确保API调用正常工作。是的。

所以基本问题是:“如何在toneAnalyzer中将 orgText res.text 交换?

app.post('/api/tone', function(req, res, next) {

  var orgText= req.body;


  //Translating input from danish to english
var translate = require('yandex-translate')('key');

translate.translate(orgText.text, { to: 'en' }, function (err, res) {
console.log(res.text);
});
// Translate end

toneAnalyzer.tone(orgText, function(err, data) {
  if (err) {
    return next(err);
  }
  return res.json(data);
});


});

我试图将toneAnalyzer函数移入翻译函数,但出现此错误:

error: { code: 500, error: 'Missing required parameters: text' }

orgText上console.log的输出如下:

{ text:
   'Jeg var meget glad for den lige i starten, men så begyndte den desværre at gå i stykker.\nJeg er meget tilfreds, og vil elske hvis jeg kunne få råd til en mere.\nDet er det værste ragelse jeg nogensinde har ejet. Den virkede kun i sølle 2 dage.\n\n',
  language: 'en' }

.... res.text的输出看起来像这样:

[ 'I was very glad the right in the beginning, but then started, unfortunately, to go in pieces.\nI am very satisfied, and would love if I could get advice for a more.\nIt is the worst junk I have ever owned. It was only in a measly 2 days.\n\n' ]

正在格式化。

1 个答案:

答案 0 :(得分:0)

正如我在my post about callbacks中所说,将需要该值的代码移到该值所在的位置。这意味着将toneAnalyzer.tone调用移到translate回调中:

app.post('/api/tone', function(req, res, next) {

  var orgText = req.body;

  //Translating input from danish to english
  var translate = require('yandex-translate')('trnsl.1.1.20190501T085025Z.d0e7ff2611e9f05a.d4ef69a7a21f28712b67991325adbf74abf72c8b');

  translate.translate(orgText.text, {to: 'en'}, function(err, res) {
    if (err) {
      // handle error
      return;
    }
    toneAnalyzer.tone(res.text, function(err, data) {
      if (err) {
        return next(err);
      }
      return res.json(data);
    });
  });

});