#node.js
Вопрос:
Я пытаюсь выполнить fs.чтение после выполнения обещания с помощью .then()
Вот как выглядит мой код
(async () =gt; { const feed = await parser.parseURL('https://www.nasa.gov/rss/dyn/breaking_news.rss'); console.log(feed.title); const items = []; await Promise.all(feed.items.map(async (currentItem) =gt; { // some code here to create data items.push(data); })).then( items.forEach((element) =gt; { const file = downloadFile(element.url); let checksumValue; try { fs.readFileSync(file, (_err, data) =gt; { checksumValue = generateChecksum(data); console.log(`The checksum is: ${checksumValue}`); // Delete the downloaded file deleteFile(file); }); } catch (error) { console.error(error); // expected output: ReferenceError: nonExistentFunction is not defined // Note - error messages will vary depending on browse } })(), ); })();
Но он не управляет этим фрагментом кода :
fs.readFileSync(file, (_err, data) =gt; { checksumValue = generateChecksum(data); console.log(`The checksum is: ${checksumValue}`); // Delete the downloaded file deleteFile(file); });
Как я должен прочитать файл?
Ответ №1:
fs.readFileSync
это синхронизация, поэтому она не требует обратного вызова.
Либо используйте несинхронизированную версию:
fs.readFile(file, (_err, data) =gt; { checksumValue = generateChecksum(data); console.log(`The checksum is: ${checksumValue}`); // Delete the downloaded file deleteFile(file); });
или используйте его по назначению:
const data = fs.readFileSync(file); checksumValue = generateChecksum(data); console.log(`The checksum is: ${checksumValue}`); // Delete the downloaded file deleteFile(file);
Комментарии:
1. Большое спасибо, второе решение сработало как волшебство