为什么数组方法在.then()回调函数中不起作用?

时间:2020-07-02 04:54:51

标签: javascript arrays es6-promise

我正在尝试对要通过$ .ajax请求从GitHub API中提取的GitHub提交日期进行排序。我已经成功获取了想要的数据,这些数据以承诺的形式从函数中返回。

但是,当我尝试使用.then来访问promise的值时,我使用的任何数组方法(如sort)都无效。参见下面的代码:

// This works fine
async function getAllCommitDates() {
  const commitDates = [];
  const userRepos = await getRepoNames();
  const repoNames = userRepos.map((repo) => repo.name);

  repoNames.forEach(async (repo) => {
    const commits = await getRepoCommits(repo);
    commitDates.push(...getDates(commits));
  });

  return commitDates;
}

// Here is the problem
getAllCommitDates().then(function (res) {
  // Returns the expected array of date strings in "YYYY-MM-DD" format
  console.log(res);
  // Returns array in the exact same order, no sorting
  console.log(res.sort());
});

当我对日期进行采样时,即[“ 2020-06-17”,“ 2020-06-25”,“ 2019-03-26”,“ 2020-06-15”],并使用.sort()可以正常工作。因此,我认为它与Promise和.then()有关,但是那是我无法解决的问题。

感谢任何帮助!

(编辑)添加带有日志的图像。第42和43行的数组具有相同的内容,并且顺序相同。 enter image description here

0 个答案:

没有答案