同时进行获取和放置休息呼叫,如何实现

时间:2019-05-17 10:27:55

标签: angular rxjs

我有一个包含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

然后下一个记录块

1 个答案:

答案 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