2017-09-24 51 views
-1

在node.js中,我希望能夠同步讀取(不讀取整個文件)行,並且能夠在一定數量的行後停止讀取。如何在node.js中同步逐行閱讀?

我看到這個https://nodejs.org/api/readline.html但他們沒有解釋如何做到同步。我也試過這個

https://github.com/nickewing/line-reader

lineReader.eachLine('big_file.txt', function(line, last) { 
    console.log(line); 

    if (last) { 
    return false; // stop reading 
    } 
}); 
console.log("test"); 

test打印的文件被讀取之前,他們說是同步的。但它看起來不是。

我希望在打印行後顯示測試打印。

有誰知道如何做到這一點?

謝謝

+0

'readline'用於高效和異步處理。如果你堅持阻止,你可以使用['readSync'](https://nodejs.org/api/fs.html#fs_fs_readsync_fd_buffer_offset_length_position)並分割成你想要的行。 – Bergi

+0

readSync將讀取我不想要的整個文件。 – omega

+0

仔細看一下'offset'和'length'參數... – Bergi

回答

0

線讀者提到,它是異步的,但返回一個承諾。您需要在線路閱讀器之後使用同步承諾處理程序。 Github readme line reader

var lineReader = require('line-reader'); 

// read all lines: 
lineReader.eachLine('file.txt', function(line) { 
    console.log(line); 
}).then(function (err) { 
    if (err) throw err; 
    console.log("I'm done!!"); 
}); 
+0

你能展示代碼是怎麼樣的嗎? – omega

+0

承諾不同步。 – Bergi

+0

它們與前一個方法的結果同步 – fisehara