【发布时间】:2016-10-27 23:25:03
【问题描述】:
我一直在阅读 rxjs 文档,但却迷失在所有的运算符中..
这是我目前得到的
let obs = Observable.from([1, 3, 5])
所以我需要做的是take() 数组中的一些设定数量。在发布请求中使用结果,当结果成功时,我需要重新启动该过程。我想收集所有结果,并在过程中保持进度(用于进度条)
我不需要所有这些的代码。我真正需要知道的是如何使用 rxjs 来拆分这个数组。发送它的一部分,然后重新启动该过程,直到没有任何东西可以发送。
最终解决方案
var _this = this
function productsRequest(arr) {
return _this.chainableRequest('post', `reports/${clientId}/${retailerId}/`, loadedProductsReport, {
'identifiers': arr,
'realTime': true
})
}
let arrayCount = Math.ceil(identifiers.length/10)
let obs = Observable.from(identifiers)
.bufferCount(10)
.concatMap(arr => {
arrayCount--
return arrayCount > 0 ? productsRequest(arr) : Observable.empty()
})
let subscriber = obs.subscribe(
value => console.log(value)
)
父级中的可链接请求方法
chainableRequest(method: string, endpoint: string, action: Function, data = {}, callback?: Function){
let body = (<any>Object).assign({}, {
headers: this.headers
}, data)
return this._http[method.toLowerCase()](`${this.baseUri}/${endpoint}`, body, body)
.map((res: Response) => res.json())
}
【问题讨论】:
标签: angular rxjs observable rxjs5