使用参数传递函数,但不执行其执行结果

时间:2016-06-13 08:58:03

标签: javascript function reactjs ecmascript-6

在我的组件中,我有一个静态need属性,用于存储function。在幕后,有一些中间件执行此function,以便在呈现组件之前执行一些异步API调用。这是它的外观:

static need = [
  myFunc(token)
]

然而,这会导致问题,因为有token参数实际执行该函数,因此其承诺将作为need传递,而不是function本身。例如,这完全正常,因为它不执行函数:

static need = [
  myFunc
]

但是这种方式我无法传递令牌。我试图弄清楚如何使用令牌将此函数传递给need,但不执行它,就像在中间件中完成一样。

4 个答案:

答案 0 :(得分:2)

你可以做到

var need = [
  myFunc, token
];

您可以将其作为

调用
need[0].apply(null, need.slice(1-need.length));

示例DEMO

function a(b){ console.log(b) } 
var  need = [
  a, "1"
];

need[0].apply(null, need.slice(1-need.length));

答案 1 :(得分:2)

鉴于您可以控制myFunc

function myFunc(params) {
   return function() {
      // do something with params
   }
}

因此,为了执行实际的功能代码,您必须调用它两次:myFunc('foo')(),这符合您在调用函数之前维护参数的需要。

答案 2 :(得分:1)

您可以使用闭包

static need = [
    (token => myFunc)(token)
]

ES6

CGPoint

答案 3 :(得分:0)

可能到现在你已经解决了这个问题,但我觉得不是将它存储在数组中,而是可以创建一个对象&将其添加为对象属性。将其存储在数组

中没有任何害处
//Define the function
var need = {
  myFunc:function(token){
   alert(token)
  }
};

// Invoking
need['myFunc'](1);

//dynamic invoke
var dynamicInvoke = 'myFunc';
need[dynamicInvoke](2);

JSFIDDLE