I have the next functions:
export const getSet = async (
projectId,
setId,
dispatch
) => await (
projectId && setId &&
setsDb
.child(`${projectId}/${setId}`)
.once("value", async snap => {
const set = snap.val();
const elements = Object.keys(set);
const elementsClasses = await getClassesForElements(projectId, elements);
const classes = Object.values(elementsClasses);
const classesAttributes = await getClassesAttributes(projectId, classes);
dispatch(setClasses(classesAttributes));
dispatch(setElements(elementsClasses));
dispatch(setSet(set));
})
);
export const getPageDetails = (projectId, pageId) => (
dispatch => (
projectId && pageId &&
pagesDb
.child(`${projectId}/${pageId}`)
.once("value", async snap => {
const pageDetails = snap.val();
const { setId } = pageDetails;
await getSet(projectId, setId, dispatch)
dispatch(
setPageDetails(
pageDetails
)
);
})
)
);
I don't have too much experience in async functions, but what I want to earn is to make getPageDetails
wait with dispatch(setPageDetails(pageDetails))
until getSet
finishes all the dispatches. In the above functions everything works fine except that getSet
finishes latest. How to solve this?