2016-09-22 126 views
-1

我特林创建像下面Node.js的功能参数注入功能

function NVConvertToFV (array, func) { 
    var funcA = []; 
    for(var i=0; i<array.length; i++) { 
     var valueF = function (callback) { 
      func(array[i], callback); 
     } 
     funcA[i] = valueF; 
    } 
    return funcA; 
} 

但是,新的函数 'FUNC(阵列[I],回调);'确认只是一个字符串。

ex。

var funcA = []; 
var msg = ['hello ', 'it ', 'is ', 'impossible!']; 
function alert (para, callback) { 
    console.log(para); 
    callback(null); 
} 
funcA = NVConvertToFV(msg, alert); 
console.log(String(funcA)); 

结果:

function (callback) {func(array[i], callback);}, 
function (callback) {func(array[i], callback);}, 
function (callback) {func(array[i], callback);}, 
function (callback) {func(array[i], callback);}, 

是否有识别为功能和阵列任何可能的方式 'FUNC' 和 '[I]数组'?像,

function (callback) {alert('hello', callback);}, 
function (callback) {alert('it', callback);}, 
function (callback) {alert('is', callback);}, 
function (callback) {alert('impossible', callback);}, 

如果有人帮助我,这将是非常高兴。

+1

为什么你需要这样做? – mscdex

+0

你只是要求toString被修改? – ShaBANG

+0

@mscdex使用'异步'模块来并行处理多个任务。并编写面向对象编程。所以,我想创建外部函数来创建函数。最终目标是这样的。 async.parallel(funcA,function(err,results){}); – Soborubang

回答

1

NVConvertToFV()使用array.forEach()而不是正常的for-loop为了正确捕获数组中的当前值,以便内联内部回调保持正确的引用。例如:

function NVConvertToFV(array, func) { 
    var funcA = new Array(array.length); 
    array.forEach(function(val, i) { 
    funcA[i] = function(callback) { 
     func(val, callback); 
    }; 
    }); 
    return funcA; 
}