Я пытаюсь выяснить, как вызвать Promise, используя «.then», чтобы я мог продолжить выполнение других функций в ответном выходе Promise. Я подтвердил, что используемая функция работает, как и ожидалось, но после просмотра видео и других примеров SO все еще не получается заставить ее работать. Смотрите ниже фрагмент:
const fs = require('fs');
const JSZip = require('jszip');
const directoryFile = fs.readdirSync('./zipped');
//console.log(directoryFile);
var zip = new JSZip();
var dir = ('./zipped/');
const readZip = async () => {
const promiseToken = new Promise((resolve, reject) => {
fs.readFile((dir + directoryFile), function (err, data) {
if (err) throw err;
JSZip.loadAsync(data).then(function (zip) {
const files = Object.keys(zip.files);
console.log(files);
files.forEach((files) => {
const pkgName = files.substring(files.indexOf("_", files.indexOf("_")) + 1, files.lastIndexOf("_"));
const fileExt = files.split('.').pop();
const pkgExtract = (pkgName + "." + fileExt);
});
})
});
return promiseToken;
});
};
console.log('Program Starts');
readZip().then((promiseToken) => {
console.log(promiseToken.join(','));
});
console.log('Program Ends');
Я продолжаю получать "(узел: 1144376) UnhandledPromiseRejectionWarning: ReferenceError: Невозможно получить доступ к 'promitoken' до инициализации". Приведенный выше блок кода принимает массив имен файлов и проходит по каждому элемент и извлекает части имени файла и объединяет части каждого имени элемента, которые мне нужны для создания нового имени файла. Опять же, функция работает и проверена. Что не работает, так это когда я пытаюсь вызвать возвращаемый результат «readZip ()» через «.then ()». Мне нужно, чтобы эта часть работала, чтобы я мог продолжить работу с остальной частью сценария. Я новичок в NodeJS и Javascript, и любая помощь будет оценена, так как ни один из видео или примеров, которые я пытался, кажется, не работает .....