与外部源异步排序



我想在Typescript中按克隆对Github Repos进行排序
纯js中的等价项是

repos.sort(async (a, b) => {
(await insights.traffic.clones(user, b.name, username, password)).uniques -
(await insights.traffic.clones(user, a.name, username, password)).uniques;
});

但是Array.prototype.sort((不适用于async/await

reposhttps://api.github.com/users/<user>/repos
insights是克隆的import * as insights from 'github-insights'文档

这将按降序对回购进行排序,成为唯一的克隆

它会获得我账户的每一笔回购,然后用https://api.github.com/repos/<user>/<repo>/traffic/clones进行排序

有什么办法让它发挥作用吗?

使用快速排序
我想出了这个

const sorted = sort(repos).desc([
async (u) => await (await insights.traffic.clones(user, u.name, username, password)).uniques
]);

但这根本没有分类,它只是repos

尝试先获取所有信息,将其放入数组中,然后进行排序。

伪ish代码:

async function getClonesForRepo(repo) {
// Do your thing and return a number
}
const repoClones = new Map();
for(const repo of repos) {
repoClones.set(repo.name, await getClonesForRepo(repo));
}
const sorted = repos.sort(
(a, b) => repoClones.get(a.name) - repoClones.get(b.name)
);

最新更新