使用節點中的 csv-parse 模塊決議一些 CSV 檔案,將檔案的內容作為陣列:
var fs = require('fs');
var parse = require('csv-parse');
var words=[];
fs.createReadStream("5.csv")
.pipe(parse({delimiter: ','}))
.on('data', function(csvrow) {
//console.log(csvrow);
//do something with csvrow
words.push(csvrow);
})
.on('end',function() {
//do something with words
//console.log(words);
});
console.log(words);
為什么此代碼回傳:
[]
一個空陣列?似乎它的范圍在 'end' 閉包內。
如何在此處決議結束時使外部可以訪問單詞變數?
uj5u.com熱心網友回復:
fs.createReadStream 是異步的:您可以(例如)將它包裝成一個承諾,以在流結束后獲取值:
const fs = require('fs');
const parse = require('csv-parse');
async function readWords() {
const promise = () => new Promise((resolve, reject) => {
const words=[];
fs.createReadStream("5.csv")
.pipe(parse({delimiter: ','}))
.on('data', function(csvrow) {
//console.log(csvrow);
//do something with csvrow
words.push(csvrow);
})
.on('end',function() {
resolve(words)
})
.on('error', function(err) {
reject(err);
});
});
const words = await promise();
console.log(words);
}
readWords();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/359272.html
上一篇:關于資料可視化的不明確術語
