Javascript 如何将Js函数数组传递给另一个Js函数?
我是java脚本的新手。我正在编写一些异步函数,比如说Javascript 如何将Js函数数组传递给另一个Js函数?,javascript,node.js,Javascript,Node.js,我是java脚本的新手。我正在编写一些异步函数,比如说func1,func2,func3。但他们必须一个接一个地执行。所以我决定使用asynclib一个接一个地执行 脚本文件: function func1(param1,param2){ //dosomething .. } function func2(param3,param4){ //dosomething .. } function func3(param5,param6){ //dosomething .. }
func1,func2,func3
。但他们必须一个接一个地执行。所以我决定使用async
lib一个接一个地执行
脚本文件:
function func1(param1,param2){
//dosomething ..
}
function func2(param3,param4){
//dosomething ..
}
function func3(param5,param6){
//dosomething ..
}
function myfunction(arr){
console.log(arr);
async.series(arr,function(){
//do something ..
});
}
<a onclick="myfunction([func1('p1','p2'),func2('p3','p4'),func('p5','p6')])"></a>
HTML文件:
function func1(param1,param2){
//dosomething ..
}
function func2(param3,param4){
//dosomething ..
}
function func3(param5,param6){
//dosomething ..
}
function myfunction(arr){
console.log(arr);
async.series(arr,function(){
//do something ..
});
}
<a onclick="myfunction([func1('p1','p2'),func2('p3','p4'),func('p5','p6')])"></a>
但是当我尝试console.log
时,它给出了null,null,null
请提供一些解决方案。您没有传递函数引用数组,而是传递调用这些函数的结果的数组。数组将包含这些函数返回的内容(或
未定义的,如果它们不返回任何内容)
如果要创建带有参数“baked in”的函数引用,可以使用函数#bind
:
myFunction([func1.bind(null, 'p1','p2'), ...])
// ^^^^^^^^^^^^ ^
Function#bind
创建一个新函数,当调用该函数时,它将使用给定的this
值(我在上面使用了null
,假设this
不重要)和您给出的参数bind
(后跟调用新函数时使用的任何参数)
例如:
myfunction([
func1.bind(null,'p1','p2'),
func1.bind(null,'p3','p4'),
func1.bind(null,'p5','p6')
]);
函数func1(arg1、arg2){
log(“func1得到(“+arg1+”,“+arg2+”);
}
函数myfunction(函数){
函数。forEach(函数(f){
f();
});
}
Hi T.J.Crowder,谢谢你的回答,我会在这种情况下尝试这一个,当你说“后跟调用新函数的任何参数”时,这些参数将添加到上面的代码中的什么位置,这些参数是否也会传递给原始函数,还是只在新函数中使用?@Dellirium:如果您这样做var f=foo.bind(null,1,2)编码>然后f(3,4)
,foo
用参数1
,2
,3
和4
调用。例如:bind
中的值,后跟调用绑定函数时提供的任何值。(调用foo
中的this
将是null
[在严格模式下]或全局对象[在松散模式下])感谢您的澄清,最后一个问题,如果在这种情况下我们使用foo.bind(null)
然后f(1,2)
会用1和2调用foo
?我知道这会抹去束缚的点,但我很好奇。@Dellirium:是的,会的。这并没有消除绑定的目的,因为它仍然设置了一个特定的this
,它只是不影响参数<事实上,代码>绑定主要用于设置此
。