gpt4 book ai didi

javascript - 异步等待未按预期工作

转载 作者:行者123 更新时间:2023-12-03 03:00:25 25 4
gpt4 key购买 nike

目前我们将短字符串存储为键。

这些键对应于作为标签的长值。

我正在尝试更新 key 相应的长值。

但是 console.log(record) 总是先执行,然后再执行内部日志语句,这不是所希望的。它始终将未修改的记录发送给 getRadioValues 函数调用者。

我想在对应的key更新后返回记录。

export const getRadioValues = (record: IRecordInput) => {
const singleSelectKeys = ['Race', 'DeathWas', 'MannerOfDeath'];
singleSelectKeys.forEach(async key => {
if (record[key]) {
const dropDownOption = await DropDownOptions.find({ where: { id: record[key] }}) as IPDFSelect;
record[key] = dropDownOption.dataValues.Text;
console.log(record[key]);
}
});
console.log(record);
return record;
};

最佳答案

您的forEach正在使用异步函数,这意味着循环可能会在它创建的任何 promise 完成之前完成。为了解决这个问题,你需要得到你的 promise 的结果并等待它们。但是,这意味着封闭函数本身必须是异步的,这对于您的实际用例来说可能可接受也可能 Not Acceptable 。

export const getRadioValues = async (record: IRecordInput) => {
const singleSelectKeys = ['Race', 'DeathWas', 'MannerOfDeath'];
await Promise.all(singleSelectKeys.map(async key => {
if (record[key]) {
const dropDownOption = await DropDownOptions.find({ where: { id: record[key] }}) as IPDFSelect;
record[key] = dropDownOption.dataValues.Text;
console.log(record[key]);
}
}));
console.log(record);
return record;
};

关于javascript - 异步等待未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47423532/

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