我有一个数组对象。我想遍历数组并调度动作。不幸的是,没有等待第一个对象完成调度,第二个对象开始调度动作,第三个,第四个,第五个对象也是如此。
我当前正在执行updateCategory函数,以便用户上传图片,然后更新类别。用户可以拖放许多图像,并为图像赋予不同的标签。我将图像和标签保留在数组对象中。我的概念是这样的,从数组对象中上传图像,然后立即使用上传的图像及其标签逐一更新类别。
这是问题所在。我使用Promise从迭代数组中获取上传图像api和更新类别api。在不等待redux状态更新的同时,它会立即获取上传图片api。最后,更新的类别始终是数组中的最后一张图片和最后一个标签。
这是我的代码:
function uploadAndUpdateSubcategoryMedias(Image, ArticleCategoryId, ArticleSubcategoryTag) {
return (dispatch, getState) => {
return dispatch(uploadSubcategoryMedia(Image)).then(() => {
const uploadedImg = getState().media.media.Data;
var MediaFiles = [];
MediaFiles.push(uploadedImg);
return dispatch(updateArticleSubcategoryMedias(ArticleCategoryId, ArticleSubcategoryTag, MediaFiles))
})
}
}
function subcatMediaTesting(subcategoryMediasArr) {
return async (dispatch) => {
var promises = [];
subcategoryMediasArr.forEach((item) => {
var response = dispatch(uploadAndUpdateSubcategoryMedias(item.image, item.articleCategoryId, item.tagName));
promises.push(response);
})
return Promise.all(await promises)
}
}
如何迭代数组对象,以便它调度upload_Media_Request
-> upload_Media_Success
-> update_Category_Request
-> update_Category_Success
,然后下一项再次开始此过程?或者,也许还有另一种方法可以完成此操作,以便我可以更新所有类别,而不仅是最后一项的类别?
感谢您的帮助!
答案 0 :(得分:0)
请记住,dispatch()返回一个Promise。您可以在提取调用中执行此操作:dispatch(...)。then(...)。我会尝试dispatch(FIRST_ACTION).then(...在这里放取调用...)。