我想用params将函数推送到数组而不执行它们。这是我到目前为止所尝试的:
var load_helpers = require('../helpers/agentHelper/loadFunctions.js');
var load_functions = [];
load_functions.push(load_helpers.loadAgentListings(callback , agent_ids));
load_functions.push(load_helpers.loadAgentCount(callback , agent_data));
但是通过这种方式,函数会在推送时执行。 This Question提供了类似的例子,但没有参数。如何在此示例中包含参数?
答案 0 :(得分:3)
您必须绑定参数到函数。 第一个参数是' thisArg'。
function MyFunction(param1, param2){
console.log('Param1:', param1, 'Param2:', param2)
}
var load_functions = [];
load_functions.push(MyFunction.bind(undefined, 1, 2));
load_functions[0](); // Param1: 1 Param2: 2
答案 1 :(得分:1)
推送符合您需要的功能:
load_functions.push(
() => load_helpers.loadAgentListings(callback, agent_ids),
() => load_helpers.loadAgentCount (callback, agent_data)
);
答案 2 :(得分:1)
你可以用这样的函数包装添加的元素,让我们模拟load_helpers
var load_helpers = {
loadAgentListings: function(fn, args) {
args.forEach(fn)
}
}
尝试以这种方式使用它:
var a = []
a.push(function() {
return load_helpers.loadAgentListings(function(r) {
console.log(r)
}, ['a', 'b', 'c'])
})
a[0]() // just execution
所有取决于您想要传递其他参数的级别,第二个概念验证
var a = []
a.push(function(args) {
return load_helpers.loadAgentListings(function(r) {
console.log(r)
}, args)
})
a[0](['a', 'b', 'c']) // execution with arguments
使用绑定:
var a = []
a.push(load_helpers.loadAgentListings.bind(null, (function(r) {return r * 2})))
console.log(a[0]([1, 2, 3])) // execution with additional parameters