【发布时间】:2019-01-25 11:19:25
【问题描述】:
我使用第三方库在 Ionic 中使用 Spotify 的 API(我没有直接从我的代码中进行 HTTP 查询),并且我试图限制每秒发送的请求数。
我的期望:
- 我可以为每个请求设置延迟
- 或设置每秒允许的最大请求数,当我需要发送超过每秒允许的最大请求数(这将是我设置的数字)时,这段代码(库、我的代码等)将排队请求并稍后发送。
我不是 Ionic 方面的专家,也不是 Angular 方面的专家。 我试过这个:
const apiCalls = [];
//in a for loop
apiCalls.push(fromPromise(this.spotifyApi.getArtistRelatedArtists(sourceArtist.mbid)).delay(this.apiDelay).toPromise());
//then
concat(...apiCalls).subscribe(
好像没什么效果,比如我发了20个请求,apiDelay为1秒,不到2秒就全部完成了。
我尝试使用库,比如这个: simple-rate-limiter 但它们应该与 'require' 一起使用,Ionic 抱怨说:
找不到模块的声明文件
如何在 Ionic 中延迟对外部 API 的请求?
【问题讨论】:
-
请求是否排队或被丢弃?
-
请求应该排队。基本上,如果我需要进行 10 次 API 调用,而 API 每秒只允许我进行 5 次调用,那么与此任务相关的 Promise 应在至少 2 秒后返回。
-
如果您有 10 个客户端同时使用您的应用,如何为每个客户端设置限制?
-
API 限制通常针对每个客户端。我只对限制当前客户端的吞吐量感兴趣。
标签: angular api ionic-framework limit