Javascript 如何将Js函数数组传递给另一个Js函数?

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 .. }

我是java脚本的新手。我正在编写一些异步函数,比如说
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
,它只是不影响参数<事实上,代码>绑定主要用于设置此