你如何用回调使函数具有任意数量的参数
How do you make function with any number of arguments with a callback
例如我有
function passConcatenatedStringBack(){
var i,concatString;
for(i=0; i<arguments.length;i++){
concatString = arguments[i];
}
callback(concatString); // this will be error since callback is undefined
}
如何在节点回调样式中实现这一点?不使用承诺
function passConcatenatedStringBack(){
var i,concatString, error;
var args = Array.prototype.slice.call(arguments); //convert to Array as Kenichi Shibata pointed out
var callback = args.pop(); //get the callback function and remove it from the arguments.
for(i=0; i< args.length;i++){
concatString += args[i];
}
callback(error, concatString);
}
只需获取最后一个参数并将其用作回调。您仍应实现验证以检查用户是否提供了有效的回调。
我可能会假设第一个参数始终是回调。
这样,我将检查第一个参数是否是函数类型,如果是,则将其用作回调,并将其余参数用作函数的参数。
好吧,你也可以检查最后一个参数是否也是回调。
常见的方法是检查最后一个参数是否是函数:
function fn() {
var cb = arguments.pop();
if (typeof cb !== 'function') {
throw new Error('No callback provided!');
}
// do your stuff and then callback
cb(null, result);
}
你试过吗:
function passConcatenatedStringBack(callback){}
passConcatenatedStringBack(function (args1){ // callback stuff });
相关文章:
- 从node.js向CasperJS传递参数数组
- 如何将数组中的参数作为不同的参数传递给javascript函数
- 如何从参数数组中调用回调
- 将参数作为不带.apply()的数组传递
- 如何使用JavaScript's”;应用“;方法,在数组之前添加一个额外的参数
- nodeJS中通过URL发送的参数数
- 匹配多个参数的重复项的lodashjavascript数组
- 基于多个参数拆分Javascript数组中的值
- 将修改后的数组作为参数传递给函数
- 在ES6中将数组析构函数参数的语法
- 在Javascript中使用对象数组作为参数
- jQuery数组参数和each()
- 传递参数数组而不更改此项
- 数组从参数到参数
- 在参数数组中传递整数数组
- React 路由器和任意查询参数:页面在加载时无意中刷新
- 基于"字符串"的任意数组元素;种子
- Javascript程序不使用数学.用for循环求任意数的幂
- 将变量赋值为这两个数之间的任意数
- 如果希望使用javascript数组作为哈希键,请使用任意数组元素进行检索