二极管。在电路中发送超过 1 个动作
Diode. Send more than 1 action in circuit
同事们,我不能让diode
从另一个动作中发送一个以上的动作给自己。这里的例子来自 App circuit
:
val handler = new ActionHandler(myZoomedState) {
override def handle = {
case action => effectOnly(Effect(someFuture map {_ =>
someAction //This action doesn't perform
someOtherAction //This one does
}))
case someAction => ???
case someOtherAction => ???
}
}
怎样才能连锁我的动作?像 >>
和 callbacks
:
someCallback >> someOtherCallback
Oleg,你的问题不太清楚。如果你的 someAction
和 someOtherAction
的处理程序实际上只是效果,正如你的 case action
的实现所建议的那样,你可以将它们移动到命名方法中并使用 <<
or >>
or +
组合它们。如果这不是您想要的,您应该更详细地阐述您的问题。
解决方案是创建另一个动作,将这两个动作结合起来。而且我仍然可以处理 Future
错误。看起来像这样:
case object DoSmthStuff
...
val handler = new ActionHandler(myZoomedState) {
override def handle = {
case action => effectOnly(Effect(
someFuture map { _ => DoSmthStuff } recover { ... }
))
case DoSmthStuff = effectOnly(
Effect.action(someAction) >> Effect.action(someOtherAction)
)
case someAction => ???
case someOtherAction => ???
}
}
同事们,我不能让diode
从另一个动作中发送一个以上的动作给自己。这里的例子来自 App circuit
:
val handler = new ActionHandler(myZoomedState) {
override def handle = {
case action => effectOnly(Effect(someFuture map {_ =>
someAction //This action doesn't perform
someOtherAction //This one does
}))
case someAction => ???
case someOtherAction => ???
}
}
怎样才能连锁我的动作?像 >>
和 callbacks
:
someCallback >> someOtherCallback
Oleg,你的问题不太清楚。如果你的 someAction
和 someOtherAction
的处理程序实际上只是效果,正如你的 case action
的实现所建议的那样,你可以将它们移动到命名方法中并使用 <<
or >>
or +
组合它们。如果这不是您想要的,您应该更详细地阐述您的问题。
解决方案是创建另一个动作,将这两个动作结合起来。而且我仍然可以处理 Future
错误。看起来像这样:
case object DoSmthStuff
...
val handler = new ActionHandler(myZoomedState) {
override def handle = {
case action => effectOnly(Effect(
someFuture map { _ => DoSmthStuff } recover { ... }
))
case DoSmthStuff = effectOnly(
Effect.action(someAction) >> Effect.action(someOtherAction)
)
case someAction => ???
case someOtherAction => ???
}
}