2
我想創建一個可變長度的窗口/輸入事件的緩衝區,它在接收附加事件時延長。反應框架中的滑動窗口/緩衝區
這是爲了實現「按照您的類型搜索」功能。我想捕捉點擊,但爲了不強調服務器,我想明智地進行服務調用。
我想到的邏輯是從第一個鍵向下緩衝鍵擊,直到鍵+ 1秒延遲。因此,如果用戶仍然在打字(即以<的頻率敲擊鍵盤1秒),我們將不會撥打後臺服務。但是,一旦他們停止打字1秒鐘,電話就會發出。
我想創建一個可變長度的窗口/輸入事件的緩衝區,它在接收附加事件時延長。反應框架中的滑動窗口/緩衝區
這是爲了實現「按照您的類型搜索」功能。我想捕捉點擊,但爲了不強調服務器,我想明智地進行服務調用。
我想到的邏輯是從第一個鍵向下緩衝鍵擊,直到鍵+ 1秒延遲。因此,如果用戶仍然在打字(即以<的頻率敲擊鍵盤1秒),我們將不會撥打後臺服務。但是,一旦他們停止打字1秒鐘,電話就會發出。
我認爲你要找的是Rx的油門功能。
來完成你在C#和Javascript想要什麼(問題被標記爲C#和rxjs即使JavaScript的肯定是你所需要的):
$(document).ready(function(){
$('#myInput')
.toObservable("keyup")
.Select(function(){ return $('#myInput').val(); })
.Throttle(500)
.Subscribe(function(text){ console.log("fire up ajax call"); });
});
SearchTextChangedObservable = Observable.FromEventPattern<TextChangedEventArgs>(this.textBox, "TextChanged");
_currentSubscription = SearchTextChangedObservable.Throttle(TimeSpan.FromSeconds(.5)).ObserveOnDispatcher().Subscribe(e => this.ListItems.Add(this.textBox.Text));
希望這有助於。
確實如此,謝謝! :D我想着各種各樣的方法來實現這一點,以防萬一沒有開箱的方式,所以你救了我一堆。 – Alwyn
我很高興能幫到;) – AirL