获取API并等待状态以在数组中更新



我有一个数组对象。我想通过阵列和调度动作进行迭代。不幸的是,第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)。

最新更新