一旦CSV完成阅读,我如何解决承诺?
问题描述:
我在这里使用'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();
答
你需要等待承诺得到解决,你需要通过在承诺的数据, 尝试这样的事情:
var parseCSV = function(){
var d = q.defer();
csv
.fromPath(school+'_export1.csv')
.on('data', function(data){
csvRows.push(data);
})
.on('end', function(){
d.resolve(csvRows);
});
return d.promise;
}
var updateSchedule = function(){
parseCSV.then(function(rows){
//TODO, your code here
});
}
编辑:
尝试链你的承诺是这样的:
deleteRows()
.then(function(){
return parseCSV();
})
.then(function(rows){
//TODO, whatever you need to do with rows
return updateSchedule(rows);
})
.done();
但我更喜欢这样的:
deleteRows()
.then(function(){
return parseCSV().then(function(rows){
//Todo your code here
});
}).done();
小心的承诺,尽量不要虐待他们的。
我有点困惑。对不起,我对承诺是新的,“完成”来自哪里?我只是将我的承诺链添加到原始文章中。之前调用函数而不是下一个函数有什么不同? – user3630824 2014-11-20 17:00:04
我刚刚复制粘贴了自己的代码,没有相关性,我已经删除了它 – 2014-11-20 17:01:39
OH!哈!我知道从哪里来的现在哈哈,对不起,对不起,谢谢! – user3630824 2014-11-20 17:02:53