私はこのプログラムを作成しています。このプログラムは、2つのワードファイルの共通ワードを見つけて、共通ワードだけで新しいファイルを作成します。 私は最初の単語ファイルの各単語を読むためにreadlineモジュールを使い、その単語をTrieに保存しています。それが完了した後、私は他の単語ファイルから単語を読み込もうとしています、そしてそれがトライであれば、私はファイルに書きます。ノードのreadline 'line'イベントが起動しない
私は、イベントが順番に発生することを約束していますが、2回目は 'line'イベントがトリガーされていないことを確認しています。
'use strict'
const readLine = require('readline');
const fs = require('fs');
const wordList = require('./Trie.js');
function createTrie(reader, trie) {
return new Promise((resolve, reject) => {
if(typeof reader === 'undefined' || reader === null)
reject('Failed')
reader.on('line', line => trie.add(line))
reader.on('close',() => {
console.log('done')
resolve(trie)
})
})
}
function findCommon(reader, trie) {
return new Promise((resolve, reject) => {
if(typeof reader === 'undefined' || reader === null) {
console.log('failed')
reject('Failed')
}
let commonWords = ''
console.log('we are here')
reader.on('line', (line) => {
console.log(line) // This does not output
if(line.length > 2 && trie.search(line)) {
let word = line + '\n'
commonWords += word
}
})
reader.on('close',() => {
fs.writeFile('wordlist.txt', commonWords, (err) => {
if(err) {
console.log(err)
reject('error')
}
console.log('written')
resolve('Success')
})
})
})
}
let reader_1 = readLine.createInterface({
input: fs.createReadStream('words/enable2k.txt')
})
let reader_2 = readLine.createInterface({
input: fs.createReadStream('words/engmix.txt')
})
createTrie(reader_1, wordList)
.then((trie) => findCommon(reader_2, trie))
.then((data) => console.log(data))
上記のコードは以下の出力
done
we are here
を与え '行' イベントがトリガされません。私は正しくreadlineを使用していないようですが、わかりません。
ご協力いただきましてありがとうございます。
私は、ファイルからの読み込みと、それに書き込むか、いなかったので、あなたは、出力ストリームオブジェクト指向 –
@VictoryOsikwemheを設定しなかった、以下のようにロジックを変えていきますユーザーのプロンプトを設定すると、私は出力ストリームを設定しませんでした。出力ストリームはオプションであると私は信じていますか? :/ – Utkarsh
これをチェックしてくださいhttps://stackoverflow.com/questions/35532332/how-does-readline-rl-write-work?rq=1 –