为什么在redux-observable中可观察到的Actions是热可观察物?

时间:2019-03-18 18:38:49

标签: rxjs observable redux-observable

为什么 redux-observable 中的 Observable 可观察的

如果将冷可观察物传递给ActionsObservable,会发生什么?

Senario:

从冷的可观察物创建动作流。每当史诗被多次“解雇”时,例如。在以下示例的情况3中, 1 + N 结果只是重复第一个“射击”的结果。

如果使用createHotObservable,一切将按预期工作。我整天都在研究这个问题,而我发现只有一些文章对ActionsObservable是热门可观察对象这一事实一目了然。

// pseudo code. 
// Normally,the epic will return "SUCCESS" 2 frames after "START". If there's "CANCEL" within 2 frames after "START", the epic will return nothing

ts = new TestScheduler()
values = {
  a: { type: 'START' },
  b: { type: 'SUCCESS'},
  c: { type: 'CANCEL' }
};


// case 1 "success"
let source = ActionsObservable.from(
    ts.createColdObservable('-a-----', values)
);
ts.expectObservable(epic(source)).toBe('---b-', values);

// case 2 "cancel"
let source = ActionsObservable.from(
    ts.createColdObservable('-ac-----', values)
);
ts.expectObservable(epic(source)).toBe('----', values);


// case 3 "success and cancel". Test fail '---b---b-' received!  
let source = ActionsObservable.from(
    ts.createColdObservable('-a---ac--', values)
);
ts.expectObservable(epic(source)).toBe('---b-----', values); 

如果有人可以提供帮助,将不胜感激。

0 个答案:

没有答案