动态更改rxjs中可观察的延迟时间

时间:2018-04-12 08:10:15

标签: javascript angular typescript rxjs

我有一项服务请求一些数据并返回Observable,我使用repeatWhen在延迟时间后连续重播此请求:

this.delay = 2000;
var observ = this.myService.getData()
            .repeatWhen(completed => completed.delay(this.delay));
this.mySubscription = observ.subscribe(val => this.handleResponse(val));

我希望能够动态修改delay的值,让我们在handleResponse方法中说出来。我怎样才能做到这一点?

例如(伪代码):

private handleResponse(val: boolean) {
    if(val)
        this.delay += 2000;
}

1 个答案:

答案 0 :(得分:1)

.repeatWhen(completed => completed.delay(this.delay));

您的观察结果已经更改,并从this.delay获得了它的价值。之后,如果您要更改this.delay,它将永远不会影响上述repeatWhen。已创建的observable的初始值为delay 不会每次都 ,并从this.delay获取值。