1
forループが終了してアップロードが完了した後でコードthis.createListing()
を実行したいと思います。 forループの後で実行すると、すべてのアップロードが完了したかどうかは考慮されません。アップロードされたファイルからはdownloadURL
が取得されません。Vue 2 + Firebase - Firebase Storageにアップロードした後に関数を実行
すべてのアップロードが完了したら、この機能を実行したいと考えています。 何か助けていただければ幸いです。ここに私のコードは次のとおりです。
submitForm() {
const user = firebase.auth().currentUser
const listingPostKey = firebase.database().ref('listings/').push().key
const listingRef = firebase.database().ref('listings/' + listingPostKey)
for (let i = 0; i < this.uploadedImages.length; i++) {
var storageRef = firebase.storage().ref('images/' + user.uid + '/' + this.imageName)
var uploadTask = storageRef.put(this.uploadedImages[i])
uploadTask.on('state_changed', (snapshot) => {
var progress = (snapshot.bytesTransferred/snapshot.totalBytes) * 100
}, error => {
this.errors.push(error.message)
},() => {
// Upload complete
var downloadURL = uploadTask.snapshot.downloadURL
this.images_url.push(downloadURL)
this.createListing()
})
}
}
これは絶対的な魅力のように働いた:
ここに私が思い付いたコードです!ありがとう、ジェイク! 私はまだforループの "i"、インデックスが必要でした。しかし、これはマップ関数 'this.uploadedImages.map((uploadedImage、index)=> {...})'に簡単に追加されます。 – Spankaroonie