在rxjs / Angular2中为主题添加去抖动

时间:2017-03-03 19:00:26

标签: angular typescript rxjs

我正在尝试使用以下代码创建事件服务

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';

export interface IPosition {
    x:number
    y:number
}

export interface IPositionEvent {
    id: string
    position: IPosition
}

@Injectable()
export class ModelEventsService {
    position$:Subject<IPositionEvent>;

    constructor() {
        this.position$ = new Subject().debounce(500);
    }

}

但是,typescript会生成以下错误

  

/src/model-events.service.ts中的错误(20,49):类型'500'的参数   不能分配给'(value:{})=&gt;类型的参数   SubscribableOrPromise”。)

我已经google了,虽然有一些解决方案,但大多数似乎都适用于http等等,我只是无法理解究竟问题是什么。

显然我需要投射某些东西,但我找不到合适的语法

如果我删除.debounce(500),则服务按预期工作并发出事件

感谢任何想法,想法或帮助;)

1 个答案:

答案 0 :(得分:2)

问题是当您看到应该使用debounce operator时,您正在使用debounceTime operator

debounce采用选择器函数 - 错误中提到 - 而debounceTime采用超时持续时间(以毫秒为单位)。