昨天项目中,一个数组中的值需要异步获取,最后发现老是不对,打了好多断点,最最后才意识到可能是forEach中await没有获取到值, 网上已经有很多答案了,我自己再记录一遍,加深印象.
问题现象
Object.values(formInstance).forEach(async (ele) => {
const { name, checked, value } = ele;
const eleVal = name.indexOf("CHECKBOX") !== -1 ? String(checked) : value;
formData.push({
FieldID: name,
FieldValue: name === "DATETEXT2" ? await getDate() :eleVal,
});
});
现象就是formData中最后DATETEXT2没有. forEach平常使用得挺多的, 里面跟一个callbackFn, 结果没有意识到callbackFn 不能是异步function.
官方解释
根据文档