2016-09-22 125 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; 
}