添加到先前合并的可观察对象

时间:2019-11-14 13:35:32

标签: rxjs

我试图像这样将新的可观察对象推送到先前合并的流中。

var state = Observable.merge(
  init,
  increase
).scan((state, changeFn) => changeFn(state), initialState);

let derp = interval(1000).map(() => state => Object.assign({}, state, {count: state.count + 1000}));
state.merge(derp);

在上面的示例中,derp不会影响内部状态的值;但是,如果执行以下操作,它将起作用。

var state = Observable.merge(
  init,
  increase,
  derp
).scan((state, changeFn) => changeFn(state), initialState);

有没有办法在事实发生后“推送”到先前合并的一组可观测对象?我正在动态创建一些DOM元素,并且需要将它们的点击操作合并到我现有的流中。

1 个答案:

答案 0 :(得分:0)

下一个功能就是我想要的。如果有人有类似的问题,这是我所涉足的一个小例子。

const eventStream = new Subject();

const emitter = eventStream.pipe(
    scan((acc, changeFn) => changeFn(acc), nextChat(initialState)),
    delay(850) // make it feel like it's doing something
);

function createElement(container) {
    const newEl = document.createElement('span');
    fromEvent(newEl, 'click')
        .subscribe(() =>
                   {
                       const compFn = ((state) => returnNewState(state));
                       // eventStream passes state to compFn
                       eventStream.next(compFn);
                   });
    container.appendChild(newEl);
}

const view = emitter.subscribe(state => nextState(state));