为什么我的变量在 await promise 之后没有被设置
Why my variable is not been set after a await promisse
const loadData = async () => {
try {
const data = await GetAllForms();
setAllForms([...data]);
} catch (err) {
console.log(err);
}
}
我的变量数据正在接收来自 GetAllForms
的数据(这是一个 promise 函数),但是当我尝试分配给另一个变量时是空的,例如在这个控制台日志中显示一个空数组。但是如果我只是一个 console.log(data)
数据显示正确,问题只出在 dataAux
我不知道这里发生了什么。
谢谢!
这里是 GetAllForms
export async function GetAllForms() {
const formRef = await dbForms.collection("forms");
const snapshot = await formRef.get();
const dataFormattedArray = [] as IFormsFormatted[];
snapshot.forEach(async doc => {
const docData = doc.data() as IForms
const aux = [] as FormsData[];
for (const id of docData.formsFieldId) {
const test = await GetOneFormsField(id);
aux.push(test);
}
const dataFormatted = { ...docData, formsFieldId: [...aux] }
dataFormattedArray.push(dataFormatted);
})
return dataFormattedArray;
}
如果我在 setAllForms
之后检查 de allForms
变量是空的。
我解决了问题...确实是 forEach
,我只重写了数据获取,用 for ... of
替换了 forEach
:
await Promise.all(snapshot.docs.map(async doc => { //Fetching in Paralel the data
const docData = doc.data() as IForms
const aux = [] as FormsData[];
for (const id of docData.formsFieldId) {
const test = await GetOneFormsField(id);
aux.push(test);
}
const dataFormatted = { ...docData, formsFieldId: [...aux] }
dataFormattedArray.push(dataFormatted);
}))
感谢所有对此回复的人!干杯!
const loadData = async () => {
try {
const data = await GetAllForms();
setAllForms([...data]);
} catch (err) {
console.log(err);
}
}
我的变量数据正在接收来自 GetAllForms
的数据(这是一个 promise 函数),但是当我尝试分配给另一个变量时是空的,例如在这个控制台日志中显示一个空数组。但是如果我只是一个 console.log(data)
数据显示正确,问题只出在 dataAux
我不知道这里发生了什么。
谢谢!
这里是 GetAllForms
export async function GetAllForms() {
const formRef = await dbForms.collection("forms");
const snapshot = await formRef.get();
const dataFormattedArray = [] as IFormsFormatted[];
snapshot.forEach(async doc => {
const docData = doc.data() as IForms
const aux = [] as FormsData[];
for (const id of docData.formsFieldId) {
const test = await GetOneFormsField(id);
aux.push(test);
}
const dataFormatted = { ...docData, formsFieldId: [...aux] }
dataFormattedArray.push(dataFormatted);
})
return dataFormattedArray;
}
如果我在 setAllForms
之后检查 de allForms
变量是空的。
我解决了问题...确实是 forEach
,我只重写了数据获取,用 for ... of
替换了 forEach
:
await Promise.all(snapshot.docs.map(async doc => { //Fetching in Paralel the data
const docData = doc.data() as IForms
const aux = [] as FormsData[];
for (const id of docData.formsFieldId) {
const test = await GetOneFormsField(id);
aux.push(test);
}
const dataFormatted = { ...docData, formsFieldId: [...aux] }
dataFormattedArray.push(dataFormatted);
}))
感谢所有对此回复的人!干杯!