2 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
正如您所說,這是因?yàn)閞eadAsDataURL()是異步的,因此您必須等到所有文件都被讀取后才能使用您的數(shù)組。
const arrayStamp = [];
handleFiles(event) {
let files = event.target.files,
i = 0,
reader = new FileReader();
reader.onload = (e) => {
arrayStamp.push({photo: reader.result})
if (i++ < files.length - 1) {
// Read the next file.
reader.readAsDataURL(files[i]);
} else {
// All files have been read.
console.log(arrayStamp);
}
};
reader.readAsDataURL(files[i]);
}
我沒有測試過這個(gè),但應(yīng)該給你這個(gè)想法。本質(zhì)上,您使用一個(gè) fileReader 按順序加載每個(gè)文件并將結(jié)果推送到您的數(shù)組。

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
在函數(shù)目錄中
export function getBase64(img, callback) {
const reader = new FileReader()
reader.addEventListener('load', () => callback(reader.result))
reader.readAsDataURL(img)
}
并使用這個(gè):
import { getBase64 } from 'functionsDirectory'
for (let i = 0; i < files.length; i++) {
getBase64(
files[i],
base64 => { arrayStamp.push({base64, file: files[i]}) }
)
}
添加回答
舉報(bào)