您可以通過緩存結果&將它們傳遞到此方法來完成此操作。基本上,通過將這種方法封裝在聚合器方法中,可以防止它始終觸發。
//... Class Impl
private string keys = String.Empty;
private readonly TimeSpan bufferDelay = new TimeSpan(100000);
private DateTime lastKeyPress = DateTime.UtcNow;
private void DoSomething(string text)
{
//do something to process text.
keys = String.Empty;
}
public void DoSomethingBuffer(string text)
{
keys =+ text;
var now = DateTime.UtcNow;
if((now-lastKeyPress) > bufferDelay)
{
DoSomething(keys);
}
lastKeyPress = now;
}
//... More Class Impl
你需要玩聚合時間窗口來找到感覺自然的感覺,但它應該是相對簡單的。您將直接調用DoSOmethingBuffer而不是DoSomethign。
你使用jQuery進行ajax調用嗎? – 2012-07-18 15:42:26
您是否正在手動實施「自動完成」?也許你可以看看http://jqueryui.com/demos/autocomplete/ – 2012-07-18 15:44:35
即使你沒有實現一個自動完成,那個自動完成的確會實現「不做任何事情,直到用戶暫停鍵入行爲,你可能會從中學習。 – Rawling 2012-07-18 15:46:37