node.js中Q与异步函数之间的链参数

时间:2013-07-23 20:10:26

标签: node.js promise q

如何链接我的两个异步函数所需的参数。

第一个函数 fs.readFile 将回调函数中的文件内容作为第二个参数返回。

第二个功能标记需要此内容作为第一个参数。第二个参数是可选的,可以是选项对象。第三个参数是回调,它应该将转换后的内容作为第二个参数。

目前我已尝试过此代码:

  var readFile = q.nfbind(fs.readFile);
  var md = q.nfbind(marked);

  readFile(fileName, 'UTF8')
  .then(md)
  .then(function (html) {
    res.setHeader('Content-Type', 'text/html');
    res.setHeader('Content-Length', html.length);
    res.status(200);
    res.end(html);
  })
  .catch(function (error) {
    res.setHeader('Content-Type', 'text/plain');
    res.send(500, 'server error: ' + error);
    res.end();
  })
  .done();

但是它不起作用,因为当使用回调函数作为第三个参数调用时,标记的函数需要第二个参数。如何设置第二个参数,以正确调用标记的函数?

1 个答案:

答案 0 :(得分:1)

如果您只是将.then(md)行替换为.then(marked),则调用fs.readFile(履行承诺的值)的结果将传递给marked