Несколько Асин c Исполнение NodeJS - PullRequest
0 голосов
/ 18 марта 2020

Я обновил фрагмент кода для каждого предложения:

const fs = require('fs');
const replaceExt = require('replace-ext');


function newFile() {
    const directoryFile = fs.readdirSync('./zipped').toString();
    const direArray = directoryFile.split(',');
    console.log(direArray);
    return Promise.resolve(direArray);
    //console.log(typeof direArray);
    //console.log(directoryFile);
}

function dirArr(direArray) {
    direArray.forEach((directoryFile) => {
        fs.rename('./zipped/' + directoryFile, replaceExt('./zipped/' + directoryFile, '.zip'), function (err) {
            if (err) throw err;
            console.log(directoryFile)
        });
    })
}

В двух словах я пытаюсь: Функция "newFile ()" - Чтение содержимого каталога - Изменить имя файла / имена с ".par" на ". zip "- вернуть массив вновь переименованных файлов. Функция" dirArr () "- использовать выходные данные, возвращаемые из" newFile () ", то есть массив имен файлов .zip - еще не начали эту часть - повторять через массив имен файлов ".zip" и выполнить еще одну асинхронную задачу c распаковать

Я все еще изучаю этот материал и прилагаю все усилия, чтобы выяснить это сам, прежде чем обратиться в SO за помощью. Поэтому я верю вам, когда вы говорите, что есть вещи, которые не имеют смысла и могут быть написаны более красноречиво. Я новичок и все еще учусь, к сожалению ..... Опять же, все вы помогаете, оценили ....

1 Ответ

0 голосов
/ 19 марта 2020

Вот реализация, которая использует основанную на обещаниях версию библиотеки fs, которая доступна как

require('fs').promises;

Я кодировал две функции. Первая функция выводит список файлов в каталоге и возвращает обещание, которое разрешается в массив полных путей. Вторая функция переименовывает эти файлы с новым расширением и возвращает обещание, которое разрешается в массив переименованных путей.

const fsp = require('fs').promises;
const path = require('path');
const replaceExt = require('replace-ext');

// takes an argument that specifies the directory to list
// returns a promise that resolves to a list of files in that directory
function listFiles(dir) {
    // make dir into a fully qualified path
    let fullDir = path.resolve(dir);
    return fsp.readdir(fullDir).then(files => {
        // make into full path
        return files.map(f => {
            return path.join(fullDir, f);
        });
    });
}

// takes an array of filenames and a new file extension
// renames all the files to have the new extension
// returns array of new filenames
async function renameFiles(files, newExt) {
    // build array of renamed filenames
    const  newFiles = files.map(f => {
        return replaceExt(f, newExt);
    });
    for (let i = 0; i < files.length; i++) {
        await fsp.rename(files[i], newFiles[i]);
    }
    return newFiles;
}


// Example usage
listFiles("./zipped").then(files => {
    return renameFiles(files, ".zip");
}).then(newFiles => {
    console.log(newFiles);
}).catch(err => {
    console.log(err);
})
...