2013-10-25 28 views
2

我想創建一個可變長度的窗口/輸入事件的緩衝區,它在接收附加事件時延長。反應框架中的滑動窗口/緩衝區

這是爲了實現「按照您的類型搜索」功能。我想捕捉點擊,但爲了不強調服務器,我想明智地進行服務調用。

我想到的邏輯是從第一個鍵向下緩衝鍵擊,直到鍵+ 1秒延遲。因此,如果用戶仍然在打字(即以<的頻率敲擊鍵盤1秒),我們將不會撥打後臺服務。但是,一旦他們停止打字1秒鐘,電話就會發出。

回答

3

我認爲你要找的是Rx的油門功能。

來完成你在C#和Javascript想要什麼(問題被標記爲C#和rxjs即使JavaScript的肯定是你所需要的):

Rxjs,你會在here找到一個偉大的教程:

$(document).ready(function(){ 
    $('#myInput') 
     .toObservable("keyup") 
     .Select(function(){ return $('#myInput').val(); }) 
     .Throttle(500) 
     .Subscribe(function(text){ console.log("fire up ajax call"); }); 
}); 

Rx.Net,你會發現在here一個有趣的例子:

SearchTextChangedObservable = Observable.FromEventPattern<TextChangedEventArgs>(this.textBox, "TextChanged"); 
_currentSubscription = SearchTextChangedObservable.Throttle(TimeSpan.FromSeconds(.5)).ObserveOnDispatcher().Subscribe(e => this.ListItems.Add(this.textBox.Text)); 

希望這有助於。

+0

確實如此,謝謝! :D我想着各種各樣的方法來實現這一點,以防萬一沒有開箱的方式,所以你救了我一堆。 – Alwyn

+0

我很高興能幫到;) – AirL

相關問題