Node.js函数参数注入函数

时间:2016-09-22 01:53:47

标签: javascript node.js parameters

我想创建像下面这样的新功能

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(array [i],callback);'被认为只是一个字符串。

离。

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'和'array [i]'被识别为函数和数组?等,

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

如果有人帮助我,那真的很高兴。

1 个答案:

答案 0 :(得分:1)

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

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