我的组件中有一个功能,即将文件处理成一个数组,然后通过调用其中一个函数将数组上传到数据服务。
我正在将上传的CSV文件解析为JSON数据数组。在processFiles
函数中,我循环遍历数组以将数据推送到processedData
数组。之后,我从数据服务中调用this.passData.pushPassedData
函数来推送已处理的数据。
问题是{for}循环完成处理文件之前正在执行this.passData.pushPassedData
函数,并且只向空数组推送数据服务。
files = []; // array to store uploaded files
processedData = []; // array to store processed JSON data
processFiles() {
for (let file of this.files) {
this.papaService.parse(file, {
header: true,
dynamicTyping: true,
complete: (results) => {
console.log("Detected: ", results.data);
for (let entry of results.data) {
if (entry.Interface !== "") {
let _entry: RuleFormat;
_entry = {
abc: "xyz",
def: "123",
}
this.processedData.push(_entry);
console.log("Pushed: " + JSON.stringify(_entry));
}
}
}
})
}
console.log("Pushed: " + JSON.stringify(this.processedData));
this.passData.pushPassedData(this.processedData);
}
从控制台,我可以看到只有在调用数据服务功能后数据才会被推送到数组中。
有没有办法让函数调用等待for循环?
答案 0 :(得分:2)
您可以在tell
中添加一个计数器,并在processFiles
回调中将其递增。处理完所有文件后,您可以致电complete
:
this.passData.pushPassedData