我有一个包含100个记录的数组,其中包含一个字段ID, 所以我需要从上面的数组中获取ID并进行GET rest调用以获取详细信息,然后一旦有了信息,就需要进行PUT调用。
当前其同步行为,即请求如下所示。 记录1-GET 记录1-PUT 记录2-GET 记录2-PUT 记录3-GET 记录3-PUT 等等。
我要达到的目的是,块中的剩余调用可以说块大小为3,因此剩余调用应该像。 记录1-GET 记录2-GET 记录3-GET 记录1-PUT 记录2-PUT 记录3-PUT
然后下一个记录块
答案 0 :(得分:1)
您可以使用buffer
bufferCount()
传入值,然后进行forkJoin
调用,展平流并为下一次调用再次重复:
const sub = source.pipe(
bufferCount(2),
concatMap(ids => forkJoin(ids.map(id => ajax.get(`https://jsonplaceholder.typicode.com/todos/${id}`)))),
map(data => data.map(res => res.response.id)),
concatMap(ids => forkJoin(ids.map(id => ajax.get(`https://jsonplaceholder.typicode.com/todos/${id}`)))),
map(data => data.map(res => res.response.title)),
)
我做了一个DEMO to play with