Rx JS - Epi c Только чтение 1 обещание - PullRequest
0 голосов
/ 09 января 2020

У меня есть Эпи c. Я хочу передать 2 HTTP Get Requests. Они оба основаны на обещании. Но это принесет данные только для первого обработанного. Эпи c:

const processorsListEpic = (action$, store, deps) =>
  action$.ofType(Type.LIST_ATTEMPT).pipe(
    switchMap(() =>
      observableFromHttpPromise(
        deps.getList(store), // This bring data
        deps.getTargets(store) // This doesn't
      ).pipe(
        mergeMap((listResult, targetResult) => {
          console.log('Target:', targetResult.data);
          console.log('List', listResult.data);
          return of(
            R.mergeAll(
              Actions.ListSuccess(listResult && listResult.data),
              Actions.TargetsSuccess(targetResult && targetResult.data)
            )
          );
        }),
        catchError(error => of(Actions.ListFailure(error)))
      )
    )
  );

Функция observableFromHttpPromise заключается в следующем:

// From is from rxjs
export const observableFromHttpPromise = promise => from(promise);

Есть идеи? Если я изменю порядок запросов, другие данные будут там.

1 Ответ

1 голос
/ 09 января 2020

Попробуйте это

observableFromHttpPromise(Promise.all(
        deps.getList(store),
        deps.getTargets(store),
      ))
...