对象键值为空但有数据
Object key values are empty but had data
所以我有一个对象,在某个时候为每个键获取一个值但突然丢失所有键值。
键值变为空,并且在控制台上对象上有一条消息说:“这个值是在第一次扩展时计算的。从那以后它可能已经改变了”,但我没有改变其他任何地方的价值。
我的服务:
image = {
name: "",
path: "",
data: ""
};
async loadFileData(fileNames: string[]) {
for (let f of fileNames) {
const filePath = `${IMAGE_DIR}/${f}`;
const readFile = await Filesystem.readFile({
directory: Directory.Data,
path: filePath
});
this.images.push({
name: f,
path: filePath,
data: `data:image/jpeg;base64,${readFile.data}`
});
// testing
this.image.name = f;
this.image.path = filePath;
this.image.data = `data:image/jpeg;base64,${readFile.data}`;
}
console.log('my image: ', this.image);
}
async loadFiles() {
this.images = [];
const loading = await this.loadingController.create({
message: 'loading data...',
});
await loading.present();
Filesystem.readdir({
directory: Directory.Data,
path: IMAGE_DIR
}).then(result => {
this.loadFileData(result.files);
}, async err => {
console.log('err: ', err);
await Filesystem.mkdir({
directory: Directory.Data,
path: IMAGE_DIR
});
}).then(_ => {
loading.dismiss();
});
}
我的组件:
this.photoService.loadFiles();
console.log('my object: ', this.photoService.image);
console.log('is my object empty? ', JSON.stringify(this.photoService.image) === '{}');
my console (screenshot)
其原始值为image = { name: "", path: "", data: ""};
。
然后你把它改成 { name: "164....", path: "stored...", data: "data..."};
我可以在控制台中做一个类似的演示:
那么当我按下按钮展开时会发生什么?
现在它显示数据已更改为“whatever”等,但其原始值 image = { name: "", path: "", data: ""};
仍显示(已记录)。
展开形式显示新数据。 empty 值属于 old 数据。
关于 javascript 的异步和内存。
当你运行console.log(this.photoService.image)
this.photoService.loadFiles();
是运行宁
这个值:{ name: "", path: "", data: ""}
当您检查控制台的值时:
this.photoService.loadFiles();
完成
this.photoService.image
的内存已更新
这个值 => { name: "xxx....", path: "yyy...", data: "zzz..."}
所以我有一个对象,在某个时候为每个键获取一个值但突然丢失所有键值。
键值变为空,并且在控制台上对象上有一条消息说:“这个值是在第一次扩展时计算的。从那以后它可能已经改变了”,但我没有改变其他任何地方的价值。
我的服务:
image = {
name: "",
path: "",
data: ""
};
async loadFileData(fileNames: string[]) {
for (let f of fileNames) {
const filePath = `${IMAGE_DIR}/${f}`;
const readFile = await Filesystem.readFile({
directory: Directory.Data,
path: filePath
});
this.images.push({
name: f,
path: filePath,
data: `data:image/jpeg;base64,${readFile.data}`
});
// testing
this.image.name = f;
this.image.path = filePath;
this.image.data = `data:image/jpeg;base64,${readFile.data}`;
}
console.log('my image: ', this.image);
}
async loadFiles() {
this.images = [];
const loading = await this.loadingController.create({
message: 'loading data...',
});
await loading.present();
Filesystem.readdir({
directory: Directory.Data,
path: IMAGE_DIR
}).then(result => {
this.loadFileData(result.files);
}, async err => {
console.log('err: ', err);
await Filesystem.mkdir({
directory: Directory.Data,
path: IMAGE_DIR
});
}).then(_ => {
loading.dismiss();
});
}
我的组件:
this.photoService.loadFiles();
console.log('my object: ', this.photoService.image);
console.log('is my object empty? ', JSON.stringify(this.photoService.image) === '{}');
my console (screenshot)
其原始值为image = { name: "", path: "", data: ""};
。
然后你把它改成 { name: "164....", path: "stored...", data: "data..."};
我可以在控制台中做一个类似的演示:
那么当我按下按钮展开时会发生什么?
现在它显示数据已更改为“whatever”等,但其原始值 image = { name: "", path: "", data: ""};
仍显示(已记录)。
展开形式显示新数据。 empty 值属于 old 数据。
关于 javascript 的异步和内存。
当你运行console.log(this.photoService.image)
this.photoService.loadFiles();
是运行宁
这个值:{ name: "", path: "", data: ""}
当您检查控制台的值时:
this.photoService.loadFiles();
完成
this.photoService.image
的内存已更新
这个值 => { name: "xxx....", path: "yyy...", data: "zzz..."}