首页 > 解决方案 > 为什么要为自定义函数提供参数并在 Javascript/NPM 模块中使用它?

问题描述

我是 Javascript 新手。我刚刚开始使用 npm、node.js 等运行。

现在,我遇到了两个流行的包:mkdirpglob ,它们提供了一些非常基本和有用的功能。在它们的基本版本中,两者都mkdirp允许glob用户在被调用时提供自定义函数。而且我找到了一个 repo,它利用了这两者mkdirpglob大致按照以下几行定义了级联的嵌套函数调用:

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

我的问题:在我可以不用(即创建目录,然后创建文件对象,然后在文件对象中操作文件)并可能编写更具可读性的代码时,提供并使用它有什么意义mkdirpglob像上面这样嵌套函数是一种好习惯吗?这是函数式编程范式的主要动机吗?错误处理?效率?避免显式创建对象?

标签: javascriptnode.jsnpm

解决方案


通常是为了提高效率。这里的术语是异步 I/O。这个想法是线程可以处理其他事情,直到输入/输出操作完成,然后再返回到您的回调。

嵌套确实有点难看,这就是引入 async/await/promises 的原因。

你可以看看MDN——他们对如何使用 await 有很好的描述。


推荐阅读