我有一个对象数组和一个匹配器,应该用匹配器中的值更新所有对象字段,但是结果是一个promise数组而不是对象数组
这是打字稿。 我尝试了以下代码,但在达到返回值后返回了承诺数组
下面的代码只是一个简化了我的真实代码的示例,因此我不需要从数字到字符串的转换:)
async updateColumn(data: Array<any>, matcher: Array<string>): Promise<Array<any>> {
let fieldName="hour";
return data.map((item) => {
const value =item[fieldName];
item[fieldName] = matcher[value];
return item;
});
}
对象数组就像
data=[{
id="1159",
hour = "11",
minute = "53"
},
{
id="1256",
hour = "13",
minute = "54"
}]
JSON匹配器就像
matcher={
"11": "Eleven",
"13: "Thirteen"
}
我希望得到类似
data=[{
id="1256",
hour = "Eleven",
minute = "53"
},
{
id="1256",
hour = "Thirteen",
minute = "54"
}]
最后
答案 0 :(得分:0)
一个异步函数返回一个Promise。从中返回值可以解决承诺。因此,您需要调用then
来获取数据-> updateColumn(data, matcher).then(data => )
。
答案 1 :(得分:0)
这里的承诺不是您所需要的。
在updateColumn函数中,您返回的是数组而不是Promise。
承诺等待响应(http,子进程,事件...),在这里您只运行同步代码,因此您的功能不是异步的。
注意:async关键字必须与await一起使用,您只能在JavaScript(和子语言)中等待的对象是Promise。