node.js - node.js 如何处理跳过的可选参数
问题描述
如果我跳过 node.js 中的可选参数会发生什么。我有以下代码:
//server.mjs
import { exec } from 'child_process';
var myCommand = "ver";
function execute(command, callback){
// child_process.exec(command[, options][, callback])
exec(command, function(error, stdout, stderr){ callback(stdout); });
};
function myCallback(text){
console.log(text);
console.log('done!');
}
execute(myCommand, myCallback);
console.log('Start!');
现在从文档中我知道 exec 有一个强制参数(命令)和两个可选参数(选项和回调)。在我的示例中,我只向 exec 函数提供了“命令”和“回调”,但没有提供“选项”。node.js 如何知道我的第二个参数实际上是回调函数而不是选项对象?
编辑:正如jonrsharpe指出的那样,正是 exec 函数检查了这一点:
function normalizeExecArgs(command, options, callback) {
if (typeof options === 'function') {
callback = options;
options = undefined;
}
// Make a shallow copy so we don't clobber the user's options object.
options = { ...options };
options.shell = typeof options.shell === 'string' ? options.shell : true;
return {
file: command,
options: options,
callback: callback
};
}
解决方案
推荐阅读
- c# - 创建表后 EFCore EnsureCreated() 运行命令
- python - 在 Python 中的用户访问矩阵中转换用户访问数据框
- c# - `AsyncLocal` 也能做 `ThreadLocal` 做的事情吗?
- python - 带有 Python 的靶心图
- database - Elasticsearch 数据库:elasticsearch 将数据存储在哪里?
- c# - c#在左边用0填充字符串
- laravel - 如何从具有值的控制器重定向到 laravel 中的另一个控制器?
- ssas - 处理 SSAS 多维立方体时出现空错误消息
- javascript - React 应用程序中的 require('child_process').fork 方法“不存在”
- c# - C# 在方法中调用方法时是否可以将 EventArgs 转换为 FormClosingEventArgs?