Я пытаюсь предпринять некоторые действия после завершения загрузки нескольких изображений, используя Promise.all.Promise.all() немедленно разрешает
Однако код после then
выполняется перед отправкой кода.
Что я здесь смущаю?
submit_all_images({ dispatch, rootState }) {
const imageFileArray = rootState.imageStore.imageFileArray
var promiseArray = []
for (var imageFile of imageFileArray) {
promiseArray.push(dispatch('get_signed_request', imageFile))
}
Promise.all(promiseArray)
.then(results => {
console.log("finished with results: " + results)
return dispatch('submit_entire_form')
});
},
get_signed_request ({ dispatch, commit, state }, imgFile) {
const requestObject = {imageName: imgFile.name, imageType: `${imgFile.type}`}
axios.post('http://localhost:3000/sign-s3', requestObject)
.then(response => {
if (response.body.signedRequest && response.body.awsImageUrl) {
const signedRequest = response.body.signedRequest
const awsImageUrl = response.body.awsImageUrl
dispatch('upload_file', { imgFile, signedRequest, awsImageUrl })
} else {
alert('Could not get signed URL.');
}
}, error => {
console.log("ERROR: " + error)
})
},
upload_file ({ dispatch, commit, state}, { imgFile, signedRequest, awsImageUrl }) {
axios.put(signedRequest, imgFile, {
headers: {'Content-Type': imgFile.type}
}).then(response => {
console.log('finished uploading file: ' + imgFile.name)
commit(types.UPDATE_LICENSE_IMG_URLS, awsImageUrl)
}, error => {
alert("fail")
console.log(error)
})
},
Это хорошие вопросы , но если вас это интересует, это уже сделано, и он готов к работе. http://imagesloaded.desandro.com/ –
Вы уверены, что '(отправка ('get_signed_request', imageFile)' возвращает обещание? Я бы проверял это во-первых, если вы используете диспетчеры Redux, не возвращайте обещания – finalfreq
Я использую Vuex и уверен, что это так: https://vuex.vuejs.org/en/actions.html – softcode