重新调用返回可观察到的Rxjs的函数

n狗

我正在React中构建一个轮播组件,我希望消耗性函数(诸如AdvanceSlide,rewindSlide等之类)返回RxJS Observable,无论与其他可观察对象如何连接,它们都可以轻松地链接,合并。

就目前而言,我的advance函数如下所示:

advance = (toIndex = this.state.focusedIndex + 1, animated = true) => {
    const destinationIndex = Math.max(0, Math.min(toIndex, this.props.children.length));
    const itemPosition = this._positions[destinationIndex];
    const domNode = $(ReactDOM.findDOMNode(this.refs.track));
    const animate = Rx.Observable.fromCallback(domNode.animate.bind(domNode));
    this.setState({ focusedIndex: destinationIndex });
    return animate({
      top: '-' + itemPosition.top + 'px'
    }, animated ? this.props.speed : 0);
};

理想情况下,我想这样调用此函数:

this.refs.carousel.advance().delay().repeat(); //achieve infinite carousel

但是,很明显,从中返回的observableadvance在重复时使用相同的计算(因为该函数.advance()仅用一次调用,并且只重复了observable)。

我需要的是一种返回可观察对象的方法,该方法可再次运行动画计算,然后在每次重复时返回一个新的可观察对象。

为了更好地说明我想要实现的目标:

 carousel.advance().repeat(1).subscribe();

第一次调用时,将计算位置和其他内容,然后返回可观察的动画,它会运行,并且一切都会正确进行动画处理。在第二次调用时,以相同的值重复信号,因此对于用户来说,似乎好像什么也没有发生,因为advance尚未重新调用函数。

如何使用RxJS实现该功能?我一直在寻找使用方法,Rx.Observable.spawn但这似乎并不是我所需要的。

用户名

advance功能实际上并未重新调用,但其输出的可观察对象已重新订阅。

另请注意,repeat(2)如果您想重复一次,则应该使用(我知道这听起来很奇怪)。

如果要重复,advance为什么不将其放在可观察的链中?例如 :

var Xms = 1000; // 1s
advanceRepeated = (context) => {
  return Rx.Observable.just(context)
                      .flatMap ((context) => {
                                 return context.refs.carousel.advance().delay(Xms); 
                               })
                      .repeat(2)
}

这未经测试,所以让我知道它是否确实有效,请注意可能的语法错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可观察到使用共享的RxJS重新连接WebSocket

来自分类Dev

RXJS可观察到的doSomething onComplete

来自分类Dev

RxJs数组可观察到的数组

来自分类Dev

RxJs可观察到的分页

来自分类Dev

返回可观察到的延期

来自分类Dev

从 eventListener 可观察到的角度返回

来自分类Dev

Rxjs间隔未轮询可观察到的服务器API调用

来自分类Dev

rxjs如何在角度服务中一起返回可观察到的值

来自分类Dev

获取可观察到的返回值,而无需订阅调用类

来自分类Dev

RxJs从产生的承诺中创建可观察到的

来自分类Dev

angular2 rxjs可观察到的forkjoin

来自分类Dev

从HttpModule中可观察到的RxJS检索数据

来自分类Dev

RXJS可观察到的删除管道运算符

来自分类Dev

Angular RxJS-无法使冷可观察到热

来自分类Dev

RxJS-可观察到的模型对象

来自分类Dev

angular2 rxjs可观察到的forkjoin

来自分类Dev

RxJS键入错误缺少可观察到的

来自分类Dev

如何在Javascript中返回对函数的引用(可观察到的敲除)

来自分类Dev

可观察到可观察的顺序

来自分类Dev

是否可以重新订阅可观察到的Retrofit 2?

来自分类Dev

是否可以重新订阅可观察到的Retrofit 2?

来自分类Dev

如何模拟改装服务可观察到的onError调用?

来自分类Dev

角度2可观察到的完整未调用

来自分类Dev

试图找出异步返回可观察到的问题

来自分类Dev

如何从http请求返回可观察到的

来自分类Dev

保持可观察到的错误并返回所有值

来自分类Dev

HTTP可观察到的返回未定义/空

来自分类Dev

可观察到的createasync

来自分类Dev

可观察到的错误