node js TypeError:callBack不是函数

时间:2016-10-10 13:03:27

标签: javascript node.js

这里有两个功能

function pushArray(data, array){
    var index = -1;
    array.forEach(function(item) { 
        if(item.name === data.name) { 
            index = array.indexOf(item);
            console.log('found existing item at ' + index);
        }
    });
    if(index >= 0){
        array[index] = newItem;
    }else {
        array.push(newItem);        
    }
}

function showData(data, array){
    try {
        if(data){
            console.log('data \n');
            console.log(data.toString());
            console.log(array);
        }
    } catch (error) {
        console.log("Showing data caused error: " + error);
    }
}

这就是回调的调用方式

fsReadFile(csvPath1, pushArray. array1);
fsReadFile(csvPath1, showData, array1);

function fsReadFile (filePath, callBack, array) {
    fs.readFile(filePath, function(err, data) {
        if(err) {
            console.error(err);
        }
        callBack(data, array);
    });
}

显示数据显示作为回调发送时的数据和数组,但pushArray不能作为回调运行,因为节点js抱怨

    array.forEach(function(item) {
         ^

TypeError: Cannot read property 'forEach' of undefined

这更像是一个回调或数组问题吗?如果有人能解释根本原因吗?

1 个答案:

答案 0 :(得分:1)

fsReadFile(csvPath1, pushArray(). array1);

您正在立即调用pushArray ,没有参数(因此arrayundefined),并且返回值作为第二个参数传递。 不要在那里打电话

然后你有一个拼写错误,你有一个.而不是一个逗号(所以你试着阅读array1的返回值的pushArray()属性,并且不要完全传递第三个参数)。

fsReadFile(csvPath1, pushArray, array1);