我正在嘗試讀取一個平面(文本)檔案并回傳以“1”或“2”開頭的行數。
我看到的問題是“recordCount”回傳 0。希望每次滿足條件時 recordCount 變數都增加 1。
export async function getReportRecordCount(finalFile: string, filePath: string) {
try {
let recordCount = 0;
const rl = readline.createInterface({
input: fs.createReadStream(`${filePath}/${finalFile}`),
output: process.stdout
});
rl.on("line", (line) => {
if (line.toString().startsWith("1" || "2")) {
recordCount ;
}
});
return recordCount;
}
}
uj5u.com熱心網友回復:
您需要正確地承諾該getReportRecordCount函式(現在,它會recordCount立即回傳,在創建介面之后,在讀取任何行之前。為了偵聽所有行都已完成讀取,請使用close事件。
您還需要修復startsWith邏輯 -("1" || "2")評估為"1". 請改用正則運算式。
export function getReportRecordCount(finalFile: string, filePath: string) {
return new Promise((resolve, reject) => {
let recordCount = 0;
const rl = readline.createInterface({
input: fs.createReadStream(`${filePath}/${finalFile}`),
output: process.stdout
});
rl.on("line", (line) => {
if (/^[12]/.test(line.toString())) {
recordCount ;
}
});
r1.on("error", reject);
r1.on("close", () => resolve(recordCount));
});
}
一旦它變得更加穩定,我建議使用readlinePromises API而不是手動構建 Promise。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453602.html
標籤:节点.js
下一篇:多個數字的字串陣列。數學平均
