所以我有一個物件,它在某個時候為每個鍵獲取一個值,但突然丟失了所有鍵值。
鍵值只是空的,并且在控制臺上有一條訊息在物件上說:“這個值是在第一次擴展時評估的。從那時起它可能已經改變了”,但我沒有改變其他任何地方的值。
我的服務:
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) === '{}');

那么當我按下按鈕展開時會發生什么?
現在它顯示資料已更改為“任何”等,但 仍顯示(記錄)其原始值。
image = { name: "", path: "", data: ""};
展開的表格顯示新資料。空值屬于舊資料。
uj5u.com熱心網友回復:
它關于 javascript 的異步和記憶體。
當你跑console.log(this.photoService.image)
this.photoService.loadFiles();在跑
這個的價值:{ name: "", path: "", data: ""}
當您檢查控制臺的值時:
this.photoService.loadFiles();完成的
記憶體this.photoService.image 已更新
這個的價值=>{ name: "xxx....", path: "yyy...", data: "zzz..."}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460328.html
標籤:javascript 有角度的 打字稿 目的 离子框架
上一篇:離子本機檔案追加:如果檔案不存在,則真正拋出錯誤“未找到”
下一篇:如何在Ionic5中自我解除模態
