用params添加函数给Array Javascript(Node.js)

我想用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)); 

但是在这种方式下,function在推动时被执行。 这个问题提供了类似的例子,但没有params。 在这个例子中,我怎样才能包含params?

推送你想要的function:

 load_functions.push( () => load_helpers.loadAgentListings(callback, agent_ids), () => load_helpers.loadAgentCount (callback, agent_data) ); 

您必须参数绑定到该函数。 第一个参数是“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 

你可以用这样的函数来包装添加的元素,让我们来模拟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 

一切都取决于你想通过额外论证的水平,第二个概念validation

 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