2016-10-10 88 views
0

這裏兩個功能節點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 

是更多的回調或數組我ssue?如果有人能解釋根本原因?

+1

無法在此代碼中使用'pushArray'(作爲回調或其他方式)。我們沒有辦法說明爲什麼第二個參數不是具有'forEach'屬性的對象。 – Quentin

+0

你如何調用pushArray? –

+0

增加了一些調用代碼。 show data與 – user3732793

回答

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

要調用pushArray立即,不帶任何參數(因此arrayundefined),並返回值作爲第二個參數傳遞。 不要在那裏叫它

然後你有一個錯字,你有一個.而不是逗號(,所以你嘗試讀取的pushArray()返回值的array1財產,不傳遞第三個參數的話)。

fsReadFile(csvPath1, pushArray, array1); 
+0

哦,男人......你是絕對正確的,有一個錯字...記事本可能不是一個好的編輯器.... – user3732793

相關問題