如何在redux-observable中同时调用多个ajax?

How to make multiple ajax call concurrently in redux-observable?

我有一个字符串数组 schemaNames = [schemaName1, schemaName2 ...],对于 schemaNames 中的每个元素,我想进行 restful 调用,以获取 schema,并且我想得到 object.

的结果

我是这样想的

export const fetchSchemasEpic = action$ =>
  action$.ofType(FETCH_SCHEMAS.REQUEST)
    .map(action => action.schemaNames)
    .switchMap(schemaNames => forkJoin(schemaNames
      .map(schemaName => ajax.getJSON('The API')))
      .map(doFetchSchemasFulfilled));

但似乎这部史诗将return一个无序数组,因此我无法指定schemaName 和schema 之间的对应关系。有人可以帮我吗?非常感谢。

我找到了解决方案:

export const fetchSchemasEpic = action$ =>
  action$.ofType(FETCH_SCHEMAS.REQUEST)
    .map(action => action.schemaNames)
    .distinctUntilChanged((old, cur) =>
      old.length === cur.length &&
      old.every((v, i) => v === cur[i]))
    .switchMap(schemaNames => forkJoin(schemaNames
      .map(schemaName => ajax.getJSON(`RESR API`)
        .map((res) => {
          const ret = {};
          ret[schemaName] = res;
          return ret;
        })
        .catch(() => ({}))))
      .map(schemas => Object.assign({}, ...schemas))
      .map(doFetchSchemasFulfilled));