gpt4 book ai didi

javascript - 使用带有可选参数的回调

转载 作者:行者123 更新时间:2023-11-30 14:56:18 24 4
gpt4 key购买 nike

我见过库在编写函数时利用可选参数和回调。我正在编写一个库,我想知道允许用户跳过可选参数并只发送回调是否是一个好习惯。

例如:

function listFiles(params, callback) {
if (typeof params === 'function' && !callback) {
callback = params;
params = {};
}
// more code here...
}

我的库的用户可以使用参数调用 listFiles():

listFiles({ verbose: true }, function callback(err, results) { /*... */ })

或者只传递 callback() 函数:

listFiles(function callback(err, results) { /*... */ })

我看到这种方法的主要好处是用户不必做:

listFiles(null, function callback(err, results) { /*... */ })

listFiles({}, function callback(err, results) { /*... */ })

问题是,如果我将 verbose 作为必需的参数,我将打破没有发送 params 的用户以及发送空或 null 作为 参数

我应该使用可选参数作为回调还是一个坏主意?

最佳答案

为什么不将 callback 作为参数之一,以便用户始终将单个参数传递给 listFiles()

function listFiles(params) {
// ... check for optional params and do something with them
params.callback(err, result);
}

现在作为用户,我可以根据需要传递可选参数(使用 limitsort 作为示例):

listFiles({
limit: 10,
sort: 'desc',
callback: (err, result) => {
// ... do something with result
}
});

或者如果我想让 listFiles() 为我提供默认值,则只需要 callback 参数:

listFiles({
callback: (err, result) => {
// ... do something with result
}
});

关于javascript - 使用带有可选参数的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47234157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com