我正在写一些异步代码。在我的一个终点中,我需要从firebase中检索一些数据以获取2个单独的内容。
这两个步骤并不依赖于彼此,但显然应该返回的最终结果是(只是成功消息以验证所有内容都已正确发布)。
postData
在上面的代码retrieveUnrelatedData
中,即使其他步骤(postCalculatedData
& postData
)不需要等待{{1}的结果,也会阻止该过程中的其他步骤1}}。
在返回完整的retrieveUnrelatedData
承诺之前,是否有更有效的方式让postData
触发?
答案 0 :(得分:2)
是的,当然!您需要知道的是async
/ await
正在使用Promises
作为其基础技术。记住这一点,请按照以下方式进行:
const myWorkload = request => Promise.all([
postData(request),
calculateData(request)
])
const calculateData = async request => {
const data = await retrieveUnrelatedData(request);
const result = calculation(data);
return await postCalculatedData(result);
}
// Not asked for, but if you had a parent handler calling these it would look like:
const mainHandler = async (req, res) => {
const [postStatus, calculatedData] = await myWorkload(req)
// respond back with whatever?
}