javascript - 为什么要为自定义函数提供参数并在 Javascript/NPM 模块中使用它?
问题描述
我是 Javascript 新手。我刚刚开始使用 npm、node.js 等运行。
现在,我遇到了两个流行的包:mkdirp和glob
,它们提供了一些非常基本和有用的功能。在它们的基本版本中,两者都mkdirp
允许glob
用户在被调用时提供自定义函数。而且我找到了一个 repo,它利用了这两者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
像上面这样嵌套函数是一种好习惯吗?这是函数式编程范式的主要动机吗?错误处理?效率?避免显式创建对象?
解决方案
通常是为了提高效率。这里的术语是异步 I/O。这个想法是线程可以处理其他事情,直到输入/输出操作完成,然后再返回到您的回调。
嵌套确实有点难看,这就是引入 async/await/promises 的原因。
你可以看看MDN——他们对如何使用 await 有很好的描述。
推荐阅读
- android - 是否可以将 AAR 文件捆绑到安装时动态交付的应用程序包中?
- java - Picocli 不会在每次执行时重置集合字段?
- microsoft-graph-api - 尝试从 Microsoft Graph API 获取访问令牌时“提供的客户端密钥已过期”
- postgresql - 如何在 Hangfire (Postgresql) 中设置成功作业的自动删除
- python-3.x - “AttributeError: '_tkinter.tkapp' 对象没有属性 '__name__'” 在使用 '.after_idle' 时
- python - 如何转换拆分“|”的代码 变成一个函数
- java - 如何使用 Java 代码获取在 datadog 监视器上收集的指标?
- javascript - 如何将两个参数传递给选择标记中的 onchange 处理程序?
- python - Matplotlib 在 X 值 python 中绘制 Julian Days
- swift - 如何指定从 Swift 导入的类