Передача аргументов в функцию обратного вызова с помощью отдельного модуля - PullRequest
0 голосов
/ 30 июня 2018

Я бы создал новый отдельный модуль с функцией, содержащей обратный вызов, который я вызываю в основном файле.

Моя программа должна принимать 3 аргумента : сначала каталог с файлом, затем расширение файла и, наконец, функция обратного вызова, которая должна фильтровать каталог по расширению файла.

Вот мой файл module.js

var fs = require('fs')

module.exports = function (directory, fileExtension, callbackfun) {
    fs.readdir(directory, callbackfun);
}

затем в основном файле я импортирую модуль, затем использую функцию.

modulejs(process.argv[2], process.argv[3], callbackfun(callbackfn));
var callbackfn = function (err, data, fileExtension) {
    console.log(fileExtension);
    let filtred = data.filter(file => { if (file.indexOf("." + fileExtension) > -1) { console.log(file); } });
};
function callbackfun(callbackfunc1) {
    callbackfunc1(err, data, fileExtension);
}

Ошибка, которую я получаю на самом деле

ReferenceError: err is not defined

ОБНОВЛЕНИЕ : я отредактировал свой код, теперь я получаю другую ошибку

UPDATE2 : Я получаю решение в Интернете, но не понимаю, как оно работает, если кто-нибудь объяснит мне его шаг за шагом, было бы неплохо

module.jsconst fs = require('fs')
const path = require('path')

module.exports = function (dir, filterStr, callback) {
    fs.readdir(dir, function (err, list) {
        if (err) {
            return callback(err)
        }

        list = list.filter(function (file) {
            return path.extname(file) === '.' + filterStr
        })

        callback(null, list)
    })
}

main.js

const filterFn = require('./module.js')
const dir = process.argv[2]
const filterStr = process.argv[3]

filterFn(dir, filterStr, function (err, list) {
    console.log(list);
    if (err) {
        return console.error('There was an error:', err)
    }

    list.forEach(function (file) {
        console.log(file)
    })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...