我在這裏使用'fast-csv'模塊(https://www.npmjs.org/package/fast-csv),但我願意改變這一點。我試過promised-csv(https://www.npmjs.org/package/promised-csv),但我無法把頭圍住它。我也在使用q(https://www.npmjs.org/package/q)。一旦CSV完成閱讀,我如何解決承諾?
這是一個承諾功能的長鏈的一部分,所以我只會打擾你這一個和緊隨其後。
var csvRows = [];
var parseCSV = function(){
var d = q.defer();
csv
.fromPath(school+'_export1.csv')
.on('data', function(data){
csvRows.push(data);
})
.on('end', function(){
done = true;
d.resolve();
});
return d.promise;
}
var updateSchedule = function(){
var d = q.defer();
console.log(csvRows);
// csvRows.forEach(function(row){
// console.log(row);
// connection.query('INSERT INTO schedule SET section_id = "'+data[0]+'", student_id = "'+data[1]+'", course_number = "'+data[2]+'", period = "'+data[3]+'", teacher_id = "'+data[4]+'", school_id = "'+school_id+'"', function(err, rows){
// if(err){
// console.log(err);
// d.reject();
// }
// });
// });
d.resolve();
return d.promise;
}
當我CONSOLE.LOG(csvRows)從。對( '數據')的方法,它單獨地記錄每一行,因爲它應該。如果我然後從.on('end')方法console.log(csvRows),它會立即記錄整個數組。完善。然後我嘗試解決這裏的承諾,但是當它移動到下一個函數時,我嘗試console.log(csvRows),我得到一個空數組。所以我得到承諾並沒有真正解決,但我不太清楚如何解決它。我真的很感謝你的幫助!
編輯:這是我的承諾鏈:
deleteRows()
.then(function(){
parseCSV();
})
.then(function(){
updateSchedule();
})
.done();
我有點困惑。對不起,我對承諾是新的,「完成」來自哪裏?我只是將我的承諾鏈添加到原始文章中。之前調用函數而不是下一個函數有什麼不同? – user3630824 2014-11-20 17:00:04
我剛剛複製粘貼了自己的代碼,沒有相關性,我已經刪除了它 – 2014-11-20 17:01:39
OH!哈!我知道從哪裏來的現在哈哈,對不起,對不起,謝謝! – user3630824 2014-11-20 17:02:53