如何解决使用 mergMap 后无法访问先前的 Payload 值
我有以下代码:
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(...)
上访问与在第一个 eventName
上相同的 console.log(...)
值。我的问题是 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;
}),...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。