Вы ничего не возвращаете из Read_Json_File
, поэтому вы получаете undefined - вы возвращаете данные из обратного вызова, который ни к чему не приводит. Вместо этого, чтобы использовать async / await, вам нужно будет обещать fs.readFile
, поскольку это еще не сделано. Тогда вы сможете использовать async / await:
function readJSONFile() {
return new Promise((resolve, reject) => {
fs.readFile('import.json', 'utf-8', (err, data) => {
if (err) reject(err);
resolve(JSON.parse(data));
});
});
}
Await требует фактического обещания, которого нужно ждать. Это возвращает обещание использовать ожидание. Таким образом, мы ждем, пока не вызовем resolve
- что произойдет, когда мы закончим загрузку JSON:
let json = await readJSONFile();
console.log(json);
Здесь мы называем readJSONFile
. Это возвращает обещание, которое разрешается, когда файл JSON завершает загрузку, и позволяет, казалось бы, синхронное выполнение асинхронного кода.
person
Andrew Li
schedule
13.12.2017