如何比较Observable流中的动作数据?

时间:2018-02-12 15:52:59

标签: rxjs redux-observable

我使用Redux并且遇到RxJ问题。

让我们说一个动作在2秒内被解雇3次(类型:' OPEN')。 Action正在向Redux状态发送一些数据。第一次和第三次射击都带来了相同的数据,但第二次没有。在带来一些影响之前,所有这些都有延迟。

我希望Observable注意到,动作1和动作3具有相同的数据并改变输出的顺序。从1,2,3 => 2,3。由于行动nr 3,应删除第一个。

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <signal.h>

#define CHECK(syscall, msg) do {                    \
    if ((syscall) == -1) {                          \
      perror(msg);                                  \
    }                                               \
  } while(0)

void catch(int signo, siginfo_t *info, void *context) {
  if (signo == SIGCHLD) {
    printf("SIGCHLD caught\n");
  }
}

int main () {
  sigset_t new_set;
  sigemptyset(&new_set);
  sigaddset(&new_set, SIGCHLD);
  struct sigaction act;
  act.sa_sigaction = catch;
  act.sa_mask = new_set;
  act.sa_flags = SA_SIGINFO | SA_RESTART;
  CHECK(sigaction(SIGCHLD, &act, NULL), "sigaction error");

  int pid, i;
  for (i = 0; i < 10; i++) {
    pid = fork();
    if (!pid) return;
  }
  while (1);
}

问题:如何比较Observable中的活动流?

1 个答案:

答案 0 :(得分:0)

在redux-observable中不可能阻止/删除调度的操作或修改它们的顺序,因为当它们到达你的史诗时,它们已经通过你的reducer和任何其他中间件运行。这是为了使史诗本身成为唯一不会发生不确定性的地方;这也意味着您可以确定在您的史诗中收到redux商店的状态时已经更新了。

如果您可以对用例进行详细说明,我可以推荐其他方法。