无法创建多标签
代码示例:
Promise.all(
srcRepoReq.data.map(async (label) => {
const newLabel: ghLabel = {
name: label.name,
color: label.color,
description: label.description,
};
const createLabelReq = await octokit.request('POST /repos/{username}/{trgtRepo}/labels', {
username: cfg.username,
trgtRepo: cfg.trgtRepo,
name: newLabel.name,
color: newLabel.color,
description: newLabel.description,
});
Terminal.writeInfo(createLabelReq.status);
Terminal.writeInfo(newLabel.name);
})
);
我想做的事:
我想使用GitHub的@octokit/core
API客户端创建多个标签。
问题:
所有这些承诺似乎都没有兑现。我不会从这两个Terminal.*
方法中得到任何文本。回购中也没有显示标签。但是,如果我在Promise.all(srcRepoReq.data.map(...));
之外执行代码,它会非常好地工作,并且正在创建标签。但我必须手动执行每个请求,并将它们硬编码到代码中。这不是我想做的。我想基于元素数组创建标签。类型:
type ghLabel = {
name: string;
color: string;
description: string;
};
这包含GitHub API创建标签所需的所有数据。
这可能是GitHub方面受到限制的原因吗?每个<time>
只有请求的<number>
?
澄清
是的。类型正确。我已经证实了。
有什么解决方案吗
正如您所提到的,滥用率限制可能是您遇到问题的根本原因。你试过catch
吗?为什么Promise.all
无法获得更多信息?我们在谈论多少个重新定位(或多或少(?
如果你发现自己达到了API的限制,我建议你尝试使用Throttling Octokit的插件(@Octokit/plugin-Throttling(。
此外,作为额外的一点,我邀请您来看看Octoherd(来自Octokit的创建者(。它为您提供了一个创建脚本实用程序,可以对存储库执行大量任务,就像您想在这里使用标签一样。
如果你在运行Octoherd或Octokit插件时遇到问题,在这些转发中打开一个问题,创建者和其他贡献者都非常活跃。