使用一些匹配器更新对象数组中的字段后,解析Array <promise>

时间:2019-03-29 18:27:29

标签: typescript

我有一个对象数组和一个匹配器,应该用匹配器中的值更新所有对象字段,但是结果是一个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"
}]

最后

2 个答案:

答案 0 :(得分:0)

一个异步函数返回一个Promise。从中返回值可以解决承诺。因此,您需要调用then来获取数据-> updateColumn(data, matcher).then(data => )

答案 1 :(得分:0)

这里的承诺不是您所需要的。

在updateColumn函数中,您返回的是数组而不是Promise。

承诺等待响应(http,子进程,事件...),在这里您只运行同步代码,因此您的功能不是异步的。

注意:async关键字必须与await一起使用,您只能在JavaScript(和子语言)中等待的对象是Promise。