为什么我的诺言会返回[object]或[array]数组

时间:2019-04-26 20:23:32

标签: javascript node.js promise async-await

我正在尝试遍历github api的url列表,并获取包含所有信息的数组。我返回的是一个带有[object],[object]而不是实际数据的数组。我认为这与我的诺言有些矛盾。

这是我的功能:

async function getCommitsByWeek() {
  const allRepoNames = await getRepos(user);
  const repoURLs = await allRepoNames.map(({ full_name, name }) => {
    return {
      name,
      url: `https://api.github.com/repos/${full_name}/stats/contributors`,
    };
  });

  const theStuff = await Promise.all(
    repoURLs.map(({ url, name }) =>
      axios.get(url, AUTH).then(({ data }) => {
        const info = data[0].weeks.map(week => {
          return { w: week.w, c: week.c };
        });
        //console.log(name, info);
        return { name, info };
      })
    )
  );
  return theStuff
}

这是预期的

{ name: 'my-github-data_frontend',
  info: [ { w: 1555804800, c: 1 } ] }
{ name: 'Below-the-fold',
  info:
   [ { w: 1542499200, c: 2 },
     { w: 1543104000, c: 0 },
     { w: 1555200000, c: 0 },
     { w: 1555804800, c: 0 } ] }
{ name: 'contraction-app',
  info:
   [ { w: 1536451200, c: 9 },
     { w: 1537056000, c: 5 },
     { w: 1555200000, c: 0 },
     { w: 1555804800, c: 0 } ] }


这就是我目前正在得到的

{ name: 'Below-the-fold',
    info:
     [ [Object],
       [Object],
       [Object], ] },
  { name: 'contraction-app',
    info:
     [ [Object],
       [Object],
       [Object],
       [Object],

1 个答案:

答案 0 :(得分:0)

这就是控制台显示它的方式。在您的“我所期望的”中,您将举例说明一个对象数组。

控制台输出显示对象数组,但未提供每个对象的详细信息。

如果要强制控制台显示每个info对象中的内容,则可以使用console.log(name, JSON.stringify(info));

顺便说一句,您靠近代码末尾的return theStuff看起来不合适。不知道在做什么。