我正在尝试对要通过$ .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()有关,但是那是我无法解决的问题。
感谢任何帮助!