ドブエンジニアの恥晒し日記です。
csvを配列にして読み込みたいんだが
なんか処理まとめたoperate.jsをindex.jsで呼び出して実行するのが良いんじゃね?
そう考えたぼくはcsvモジュールを使った処理を丸々コピペして
index.js
var path ="./読み込みたい.csv";
(async () => {
console.log("↓ここに結果が出力されるよ!");
operate.csvRead(path);
console.log("↑ここに結果が出力されるよ!");
})();
operate.js
exports.csvRead = async function (path) {
var parser = csv.parse({ columns: true, trim: true }, function (err, data) {
console.log(data);
});
fs.createReadStream(path).pipe(parser);
};
適当にこんな感じでいけるっしょ!
期待していたのは
理想
↓ここに結果が出力されるよ!
[
{yomikomi:kekka}
]
↑ここに結果が出力されるよ!
こんな感じ
しかし
現実
↓ここに結果が出力されるよ!
↑ここに結果が出力されるよ!
[
{yomikomi:kekka}
]
???????????????
あ、なんかawait入れたら同期処理になる(IQ3)から書けばいけるか!
いけない
なんで?
処理が後になるからoperateからreturnしてindexに渡すこともできない
えー?
なんかいけたやつ
csvtojsonっていうモジュールを使ったらいけた
operate.js
const csvtojson = require("csvtojson");
exports.csvImport = async function (path) {
var csv_arr = await csvtojson().fromFile(path);
return csv_arr;
};
つまりどういうこと?
わかりません
この記事からは何も得ることができません
Qiitaさん無駄にリソース使ってしまって本当にすみません
思ったこと
脳死でawait書きまくってPromiseとか根本的な非同期I/Oの知識をすっとばしまくってるからこういう事になるんだとおもいました
今がんばって何が起こっていたのか調べています まる
↧