与外部源异步排序
Sort asynchronously with external source
我想按 Typescript 中的克隆对我的 Github 回购进行排序
普通 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
repos
是 https://api.github.com/users/<user>/repos
insights
是 import * as insights from 'github-insights'
Docs for clones
这会将回购按降序排列为唯一克隆
它会获取我帐户的每个回购协议,然后用 https://api.github.com/repos/<user>/<repo>/traffic/clones
对其进行排序
有什么办法让它起作用吗?
使用fast-sort
我想到了这个
const sorted = sort(repos).desc([
async (u) => await (await insights.traffic.clones(user, u.name, username, password)).uniques
]);
但这根本没有排序,它只是 repos
尝试先获取所有信息,将其放入数组中,然后排序。
伪代码:
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)
);
我想按 Typescript 中的克隆对我的 Github 回购进行排序
普通 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
repos
是 https://api.github.com/users/<user>/repos
insights
是 import * as insights from 'github-insights'
Docs for clones
这会将回购按降序排列为唯一克隆
它会获取我帐户的每个回购协议,然后用 https://api.github.com/repos/<user>/<repo>/traffic/clones
有什么办法让它起作用吗?
使用fast-sort
我想到了这个
const sorted = sort(repos).desc([
async (u) => await (await insights.traffic.clones(user, u.name, username, password)).uniques
]);
但这根本没有排序,它只是 repos
尝试先获取所有信息,将其放入数组中,然后排序。
伪代码:
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)
);