Возможно, самое простое решение - это await
после добавления некоторого шаблона обещания или повторного использования ...
Я не вижу, как повторно использовать Обещание, которое, я полагаю, уже существует, в метод csv-parse.readFileSync()
или метод parse()
, показанный ниже.
Другое решение состоит в том, чтобы добавить больше обещаний и немного async / await : весь блок LOAD может быть функцией ... Но я также не вижу, куда поместить ожидающих.
'use strict';
const fs = require('fs')
const path = require('path')
// CONFIGS:
const cf_cover_dataset = '../data/cover.csv'
var COVER = null;
// LOAD external configs:
var COVER_file = path.resolve(__dirname, cf_cover_dataset);
if (path.extname(cf_cover_dataset)=='.csv') {
const parse = require('csv-parse') // npm i csv-parse (not parse"r")
let raw = []
parse(fs.readFileSync( COVER_file ), {
trim: true,
skip_empty_lines: true
})
.on('readable', function(){
let record
while (record = this.read()){
raw.push(record) ; console.log('.')}
})
.on('error', function(err){ console.error(err.message) })
.on('end', function(){
// I NEED TO WAY THE END HERE, HOW TO?
COVER = f(raw);
console.log("1. cover from CSV");
});
} else {
COVER = JSON.parse(COVER_file) // ... and WAY here
console.log("1. cover from JSON");
}
console.log("2. END!!");
Результат
2. END!!
1. cover from JSON
Как получить step2 после step1?