我对 javascript 很陌生,但还没有找到问题的答案。
实际上,我使用 for 循环来获取多个 csv 文件的内容,并将每个内容添加到全局 csvstring 中,以便在最后下载整个 csv 文件。但是每个 csv 的内容是通过异步的 d3.csv 获得的,因此,如果我更新 d3.csv 中的总 csvstring,则之后我无法使用它来保存总 csv,因为 csvstring 尚未更新。我该怎么做?
我的代码不起作用,如下:
//here is code to define the queries
csvstring = "";
for (i=0 ; i<queries.length ; ++i) {
d3.csv(queries[i], function(data) {
//here is code to format data as a csvstring and then
csvstring += data_as_csvstring;
}
});
//here is code to download csvstring as a csvfile
我希望我说清楚了,提前感谢您的回答!
杂志
最佳答案
您可以进行一些递归并等到最后一个查询执行某些操作吗?
var getCsv = function(queries, csvstring, startAt, callback){
d3.csv(queries[startAt], function(data) {
csvstring += data_as_csvstring;
if(index == queries.length){
callback(csvstring);
} else {
getCsv(queries, csvstring, startAt++, callback);
}
});
}
getCsv(queries, '', 0, function(csvstring){
console.log(csvstring); //the complete string
});
关于javascript - 如何在包含异步函数的循环之后完成某件事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28371079/