需要帮助为Webtask编写简单的回调函数

时间:2017-06-05 23:55:39

标签: javascript callback

我正在尝试创建我在本地工作的节点应用的webtask功能。 Webtask提供了一个模板,它有一个上下文(ctx)和一个回调(cb)作为两个参数:

module.exports = function(ctx, cb) {
  cb(null, { hello: ctx.data.name || 'Anonymous' });
};

我有半工作代码,如下所示:

const PDFParser = require('pdf2json@1.1.7')
const request = require('request')

module.exports = function(ctx, cb) {

  const pdfParser = new PDFParser();
  const pdfUrl = ctx.body.data.url;
  const pdfPipe = request({url: pdfUrl, encoding:null}).pipe(pdfParser);
  const data = []; //define empty array for response data

  pdfPipe.on("pdfParser_dataError", err => console.error(err) );
  pdfPipe.on("pdfParser_dataReady", pdf => {
    data.push(pdfParser.getAllFieldsTypes()); //push data into array
    console.log("data", data); //log the result
  });

  cb(null, data );
};

我需要将更新的“数据”发送到回调函数,但无法弄清楚如何。我目前正在返回一个空数组(最初的const data = []),但我的console.log("data", data)会返回所需的结果。

1 个答案:

答案 0 :(得分:2)

为了修复你的代码,你需要做的是在调用on(发射器)时调用回调:

const request = require('request')

module.exports = function(ctx, cb) {

  const pdfParser = new PDFParser();
  const pdfUrl = ctx.body.data.url;
  const pdfPipe = request({url: pdfUrl, encoding:null}).pipe(pdfParser);
  const data = []; //define empty array for response data

  pdfPipe.on("pdfParser_dataError", err => console.error(err) );
  pdfPipe.on("pdfParser_dataReady", pdf => {
    data.push(pdfParser.getAllFieldsTypes()); //push data into array
    console.log("data", data); //log the result
    cb(null, data );
  });


};