Зачем предоставлять аргумент для пользовательских функций и использовать его в модулях Javascript / NPM? - PullRequest
0 голосов
/ 03 сентября 2018

Я новичок в Javascript. Я только что запустился с npm, node.js и т. Д.

Теперь я обнаружил два популярных пакета: mkdirp и glob которые учитывают некоторые очень простые и полезные функции. В базовой версии mkdirp и glob позволяют пользователю при вызове предоставлять пользовательскую функцию. И я нашел репо, в котором используются как mkdirp, так и glob для определения каскада вызовов вложенных функций примерно по следующим строкам:

  mkdirp('some_path', (err) => { // first nesting
    if (!err) {
      glob(
        'some_glob_exp',
        (err, files) => { // another nesting
          if (!err) {
            // transform file
            files.map(do_something);
          };
        };
      );
    };
  })

Мой вопрос: Какой смысл предоставлять эту функциональность в mkdirp и glob и использовать ее, когда я могу обойтись без (то есть создать каталог, затем создать объект файлов, затем манипулировать файлами в объекте файлов) и, возможно, написать более читаемый код ? Это хорошая практика, чтобы вкладывать функции, как указано выше? Является ли основная мотивация для этого парадигмой функционального программирования? обработка ошибок? эффективность? избегать явного создания объектов?

1 Ответ

0 голосов
/ 03 сентября 2018

Это обычно для эффективности. Термин здесь - асинхронный ввод / вывод. Идея состоит в том, что поток может работать над другими вещами до тех пор, пока не завершится операция ввода / вывода и не вернется к вашему обратному вызову позже.

То, что вложение действительно немного уродливо, вот почему было введено async / await / обещания.

Вы можете взглянуть на MDN - у них действительно хорошее описание того, как использовать await.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...