我正在尝试将解析value
的{{1}}保存到全局array
中。
但全局array
向我显示array
undefined
控制台
dataUrl: string = "assets/data.csv";
private data:[];
dataInit(){
this.papa.parse(this.dataUrl, {
download: true,
complete: (result) => {
// result.data.push(this.data);
this.data = result.data
// console.log(result.data, "inside parser");
// console.log(this.data, "global array");
}
});
}
ngOnInit() {
this.dataInit();
console.log(this.data, "inside onInit");
}
答案 0 :(得分:1)
数据将在complete callback
内部可用。所以console.log(this.data)
在那儿。
原因:
complete
是一种异步工作的回调方法。
dataUrl: string = "assets/data.csv";
data = [];
dataInit(){
this.papa.parse(this.dataUrl, {
download: true,
complete: (result) => {
// result.data.push(this.data);
this.data = result.data
console.log(this.data);
}
});
}
ngOnInit() {
this.dataInit();
}
答案 1 :(得分:1)
有两个原因-
private data: Array<any>= [];
答案 2 :(得分:0)
将data属性的初始化更改为类似
private data = [];
或
private data: Array<T> = []
代替 T 相应地键入您的数组
答案 3 :(得分:0)
将控制台日志放入异步代码的完整功能中。
由于papa.parse
下载代码是异步的,因此控制台日志将显示data
的初始值,因为结果尚未准备好。
答案 4 :(得分:0)
由于this.papa.parse函数是异步的,因此在调用dataInit之后无法立即获取数据变量的值...最好在完整的回调中进行
dataUrl: string = "assets/data.csv";
private data:[];
dataInit() {
this.papa.parse(this.dataUrl, {
download: true,
complete: (result) => {
this.data = result.data
this.toDo();
}
});
}
ngOnInit() {
this.dataInit();
}
toDo(){
console.log(this.data, "global array");
}