使用 mergMap 后无法访问以前的有效负载值

Cannot access to previous Payload value after a using mergMap

我有以下代码:

export const googleTagManagerInternalActionsEpic: Epic<RootAction, RootAction, RootState, Services> = (action$, state$) => {

  return action$.pipe(
    mergeMap(action => merge(
      of(action).pipe(
        filter(isActionOf(triggerGTMEvent)),
        tap(({ payload: eventName }) => {
            console.log(eventName);
        }),
        mergeMap(() => loadQuestion()),
        map(questionImport => questionImport.default),
        tap((question) => {
          console.log(question);
          debugger;
        }),
        ignoreElements(),
      ),
    )),
  );

}

我需要在第二个 console.log(...) 上访问与在第一个 console.log(...) 上相同的 eventName 值。我的问题是介于两者之间的 mergeMap (这阻止了有效负载的传播)。我被迫使用 mergeMap 来从 loadQuestion() 电话中获取一些信息。

我是否可以同时获得这两个值?

谢谢!

您可以在 mergeMap 中使用第二个参数:

...
        tap(({ payload: eventName }) => {
            console.log(eventName);
        }),
        mergeMap(() => loadQuestion(), (eventName, questionImport) => ({
          eventName,
          questionImport
        })),
        map(({ eventName, questionImport }) => ({
          eventName,
          question: questionImport.default
        })),
        tap(({ eventName, question }) => {
          console.log(eventName, question);
          debugger;
        }),
...