RxJS 5 - 函数调用两次

时间:2016-12-21 17:35:04

标签: rxjs5 redux-observable

我在尝试使用RxJS删除行之前显示确认模式。

  • 如果我删除1行,下面的代码可以正常工作。
  • 当我删除第二行时,# first I'm going to separate the data a<-as.data.frame(df[,1]) b<-as.data.frame(df[,2]) # > a # df[, 1] # 1 10 # 2 14 # 3 17 # 4 18 #> b # df[, 2] # 1 F # 2 F # 3 M # 4 F # combining the data into a new data frame d <- cbind.data.frame(a,b) # > d # df[, 1] df[, 2] # 1 10 F # 2 14 F # 3 17 M # 4 18 F # exporting to excel install.packages("xlsx") library(xlsx) write.xlsx(d, "c:/myspreadsheet.xlsx") 被调用2次。
  • 如果删除第三行,则deleteLineFulfilled被调用3次,依此类推......

知道为什么吗?

deleteLineFulfilled

2 个答案:

答案 0 :(得分:3)

action$是一个永久的可观察对象,它只会在调度MODAL_NO_CLICKED类型的操作时停止 - 从您的代码中很难说当发生这种情况时,您应该添加在.take(1)之前.takeUntil(...)

但是,对于这种架构,您必须确保 MODAL_YES_CLICKEDMODAL_NO_CLICKED发射,并且不能跳过发射。

一种更简单的方法是实现确认对话框,订阅结果,然后仅在结果为YES时调度删除操作,并且结果为NO不要&#39;甚至派遣行动。这样你就会有更清晰的动作史诗。

答案 1 :(得分:1)

试试这个:

        .first() // $action is a perpetual observable. Only take the first one.
        .takeUntil(action$.ofType(MODAL_NO_CLICKED))