0

所以我试图从 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;
 });
4

1 回答 1

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,正如您在上面所说的那样。

于 2020-09-24T14:14:58.077 回答