在我的组件中,我有一个静态need
属性,用于存储function
。在幕后,有一些中间件执行此function
,以便在呈现组件之前执行一些异步API调用。这是它的外观:
static need = [
myFunc(token)
]
然而,这会导致问题,因为有token
参数实际执行该函数,因此其承诺将作为need
传递,而不是function
本身。例如,这完全正常,因为它不执行函数:
static need = [
myFunc
]
但是这种方式我无法传递令牌。我试图弄清楚如何使用令牌将此函数传递给need
,但不执行它,就像在中间件中完成一样。
答案 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);