gpt4 book ai didi

javascript - 等待直到内部函数被触发

转载 作者:行者123 更新时间:2023-11-29 23:01:51 25 4
gpt4 key购买 nike

我有下一个功能:

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
)
);
})
)
);

我在异步函数方面没有太多经验,但我想赚取的是让getPageDetails等待dispatch(setPageDetails(pageDetails))直到getSet 完成所有调度。在上述函数中,除了 getSet 最晚完成之外,一切正常。如何解决?

最佳答案

await 只会在您等待的表达式的计算结果为 promise 时暂停。

once 接受回调,因此大概不会返回 promise 。

因此你需要wrap it with a function which does return a promiseonce 完成时解析(这意味着也转换所有 dispatch 调用)。

关于javascript - 等待直到内部函数被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55454917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com