如何编写Meteor.wrapAsync fs.readFile?

约翰·艾伦

我需要一个函数,该函数从带有换行符的文件中发出单独的行。没什么难的。

但是使用node很难,而使用Meteor则有另外一个复杂之处:您必须使用Meteor.wrapAsync令人惊讶的是,wrapAsync 在文档中没有如何使用的示例,而我在网上只能找到几个示例,没有一个有帮助。

我有类似的东西:

var readFileAsync = function (file, cb) {
  // From here to below comment works synchronously
  var instream = fs.createReadStream(file, function () {
    var outstream = new stream;
    outstream.readable = true;
    outstream.writable = true;
    var rl = readline.createInterface({
      input: instream,
      output: outstream,
      terminal: false
    });
    rl.on('line', function(line) {
      console.log(line);
      return line;
    });
  });
  // Reference to aforementioned comment
};

var readWatFile = Meteor.wrapAsync(readFileAsync);
  var line = readWatFile('/path/to/my/file');
  console.log(line);

我知道这是错误的,因为它不起作用,那么我该怎么写呢?

因斯拉夫科

有两种解决方法。

  • 将整个文件加载到内存中,然后执行所需的任何操作。为此,您可以使用私有资产API
  • 使用node.js流并逐行流式传输文件。你会有类似这样的东西。

您需要调整自己喜欢的流方法的示例代码:

var Future = Npm.require('fibers/future');
var byline = Npm.require('byline');
var f = new Future;
// create stream in whatever way you like
var instream = fs.createReadStream(...);
var stream = byline.createStream(instream);

// run stream handling line-by-line events asynchronously
stream.on('data', Meteor.bindEnvironment(function (line) {
   if (line) console.log(line)
   else future.return();
}));

  // await on the future yielding to the other fibers and the line-by-line handling
  future.wait();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使fs.readFile异步等待?

来自分类Dev

Meteor._wrapAsync导致Meteor无响应

来自分类Dev

如何将使用fs.readFileSync()的Node.js代码重构为使用fs.readFile()?

来自分类Dev

node.js fs.readFile如何知道何时到达EOF

来自分类Dev

Meteor.WrapAsync不返回值

来自分类Dev

流星-用Meteor.wrapAsync()包装NPM

来自分类Dev

Meteor._wrapAsync和节点子进程

来自分类Dev

Fs.readFile 返回未定义

来自分类Dev

如何在客户端上使用Meteor.wrapAsync?

来自分类Dev

Meteor._wrapAsync已重命名为Meteor.wrapAsync undefined

来自分类Dev

流星:在服务器上正确使用Meteor.wrapAsync

来自分类Dev

在循环中与fs.readFile一起使用Promises

来自分类Dev

为什么fs.readFile返回缓冲区?

来自分类Dev

Async.series不适用于fs.readFile

来自分类Dev

fs.readFile之后关闭文件,为空

来自分类Dev

使用require vs fs.readFile读取json文件内容

来自分类Dev

在节点js中不起作用fs.readFile

来自分类Dev

对象不支持属性或方法“ readFile”(节点:fs)

来自分类Dev

未捕获的TypeError:fs.readFile不是函数

来自分类Dev

Javascript fs.readfile()未保存为变量

来自分类Dev

模块的fs.readFile,我怎么知道它在哪里?

来自分类Dev

async.waterfall中的fs.readFile不返回数据

来自分类Dev

为什么fs.readFile返回的顺序不同?

来自分类Dev

nodejs express 函数不从 fs.readFile 返回变量

来自分类Dev

如何将Meteor.wrapAsync与EventEmitter一起使用?

来自分类Dev

fs.readdir和fs.readfile和正则表达式

来自分类Dev

流星_wrapAsync

来自分类Dev

如何使用 ReadFile 修复乱码?

来自分类Dev

为什么insert()会中断Meteor方法中的wrapAsync'd child_process.spawn()处理函数?

Related 相关文章

热门标签

归档