gpt4 book ai didi

javascript - 如何创建一个 redux-observable 史诗,它在做任何事情之前等待 2 个 Action

转载 作者:行者123 更新时间:2023-11-30 07:03:55 25 4
gpt4 key购买 nike

我想创建一个在开始工作之前监听明确的 Action 序列的史诗。

此史诗在第一次完成后也不需要存在。

我想象的是这样的:

function doTheThing(action$) {
return action$
// The start of the sequence
.ofType(FIRST_ACTION)

// Do nothing until the second action occurs
.waitForAnotherAction(SECOND_ACTION)

// the correct actions have been dispatched, do the thing!
.map(() => ({ type: DO_THE_THING_ACTION }))
.destroyEpic();
}

redux-observable 可以实现这样的功能吗?

最佳答案

正如@jayphelps 在评论中指出的那样,有几个变体取决于您是否需要访问各种事件以及事件是否必须严格排序。所以以下内容应该都适合:

1) 严格有序不关心事件:

action$
.ofType(FIRST_ACTION)
.take(1)
.concat(action$.ofType(SECOND_ACTION).take(1))
.mapTo({ type: DO_THE_THING_ACTION })

2)严格有序的关心事件

action$
.ofType(FIRST_ACTION)
.take(1)
.concatMap(
a1 => action$.ofType(SECOND_ACTION).take(1),
(a1, a2) => ({type: DO_THE_THING_ACTION, a1, a2})
)

3)非严格有序(做或不做)关心事件

Observable.forkJoin(
action$.ofType(FIRST_ACTION).take(1),
action$.ofType(SECOND_ACTION).take(1),
// Add this lambda if you *do* care
(a1, a2) => ({type: DO_THE_THING_ACTION, a1, a2})
)
// Use mapTo if you *don't* care
.mapTo({type: DO_THE_THING_ACTION})

关于javascript - 如何创建一个 redux-observable 史诗,它在做任何事情之前等待 2 个 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45045820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com