因此,我试图从API获取一些数据并对其进行一些转换,然后返回值。 这是从hubspot的hubdb API中提取数据,但是当数据返回时,您不会获取字段名称,因此我需要通过一个函数运行它来获取字段名称。 我可以使用以下命令在一行上成功完成此操作。
return axios.get('urltoapi').then((res) => {
const row = res.data;
return convertHubdbKeyValues(table_name, row.values).then((details) => {
return {
details,
};
});
});
然后我尝试遍历多行以构建数据数组,但是我得到的只是一个空数组,我确定我在这里做的是一些非常基本的错误
return axios
.get(getRowByQueryUrl(table_details.table_id, query))
.then((res) => {
var bookings = [];
this.data = res.data;
this.data.objects.forEach((item) => {
return convertHubdbKeyValues(table_name, item.values).then(
(updatedValues) => {
bookings.push(updatedValues);
}
);
});
return bookings;
});
答案 0 :(得分:1)
在当前的实现中,在bookings
内部的异步调用完成之前,将返回forEach
数组。解决此问题的一种方法是使用Promise.all
:
return axios
.get(getRowByQueryUrl(table_details.table_id, query))
.then((res) => {
const promises = res.data.objects.map(item => convertHubdbKeyValues(table_name, item.values))
return Promise.all(promises)
});
顶级函数将返回一个承诺,该承诺将解析为updatedValues
的数组,就像您在上面所说的那样。