let button = document.querySelector('.mbtn');
let lab = document.querySelector('.mlab');
let clickStream = Observable.fromEvent(button,'click');
let doubleClickStream = clickStream
.buffer(()=> clickStream.throttle(250))
.map(arr => arr.length)
.filter(len => len === 2);
doubleClickStream.subscribe(event =>{
lab.textContent = 'double click';
});
doubleClickStream.throttle(1000)
.subscribe(suggestion =>{
lab.textContent = '-';
});
但这是我的angular2项目中的错误,谁可以帮我解决它, 这是错误日志↓
错误 /Users/genilex3/Desktop/meager/angularRxjs/angularrxjs/src/app/app.component.ts (58,15):类型的参数'()=>任何'不能分配给参数 类型'可观察'。物业' _isScalar'在类型中缺失 '()=>任何'
错误 /Users/genilex3/Desktop/meager/angularRxjs/angularrxjs/src/app/app.component.ts (58,41):类型'类型的参数'不能分配给参数 type'(value:{})=> SubscribableOrPromise'
答案 0 :(得分:2)
您应该使用bufferTime
作为您的信息流。
let doubleClickStream = clickStream
.bufferTime(250)
.map(arr => arr.length)
.filter(len => len === 2);
您可以在这里阅读更多内容:http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-bufferTime
如果要在设置1000ms后清除值,则应使用debounceTime
方法。
doubleClickStream.debounceTime(1000)
.subscribe(suggestion =>{
lab.textContent = '-';
});
您可以在此处详细了解debounceTime
:http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-debounceTime