【发布时间】:2018-10-23 01:44:32
【问题描述】:
几天来,我一直在努力(和搜索)寻找解决方案,虽然以下工作有效,但我不禁觉得有一种更 rxjs-y 的方式来做这件事。
我有一组 URL 可以从具有速率限制的外部源下载,例如每分钟不超过 100 个调用。
const sources = ['a.jpg', 'b.jpg', 'c.jpg'];
timer(0, 1000).pipe(
switchMap(index => of(sources[index])),
takeWhile(_ => _ !== undefined),
switchMap(url => {
return from(download(url))
})
).subscribe(
next => console.log(next),
err => console.error(err),
() => console.info('Done')
)
// Pseudo
function download(url) {
return new Promise((resolve, reject) => {
resolve('Downloaded ' + url)
})
}
似乎有点迂回和hacky。
遍历数组以免因每秒请求过多而被锁定的最佳方法是什么?
【问题讨论】:
标签: javascript rxjs