【发布时间】:2016-07-08 13:50:13
【问题描述】:
我正在尝试学习一些事件驱动编程的基础知识。因此,对于一个练习,我正在尝试编写一个程序来读取一个大的二进制文件并用它做一些事情,但没有进行阻塞调用。我想出了以下几点:
var fs = require('fs');
var BUFFER_SIZE = 1024;
var path_of_file = "somefile"
fs.open(path_of_file, 'r', (error_opening_file, fd) =>
{
if (error_opening_file)
{
console.log(error_opening_file.message);
return;
}
var buffer = new Buffer(BUFFER_SIZE);
fs.read(fd, buffer, 0, BUFFER_SIZE, 0, (error_reading_file, bytesRead, buffer) =>
{
if (error_reading_file)
{
console.log(error_reading_file.message);
return;
}
// do something e.g. print or write to another file
})
})
我知道我需要放置一个 while 循环才能读取完整的文件,但在上面的代码中,我只读取文件的前 1024 个字节,无法制定如何在不使用阻塞循环的情况下继续读取文件。我们该怎么做?
【问题讨论】:
标签: node.js event-driven event-driven-design