我有一个数组对象。我想通过阵列和调度动作进行迭代。不幸的是,第2个对象没有等待第一个对象完成调度,因此第三,第四,第5个。 我当前正在执行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
然后下一个项目再次启动此过程?也许还有另一种完成此操作的方法,以便我可以更新所有类别,而不仅仅是最后一项的类别?
请记住,dispatch()返回承诺。您在接听电话中这样做:dispatch(...)。然后(...)。我会尝试派遣(first_action)。