2013-03-31 20 views
0

我有一個autosuggest庫,我一直在使用我的項目。我現在有一個textinput,我必須使用這個庫。但是這次輸入有大約900,000條記錄。即具有900,000個節點的xml。當我將它與組件一起使用時,它可以正常工作,但由於每次按鍵上的xmllistcollection過濾可能會變慢。在每次按鍵時,刷新需要2-3秒。有沒有辦法加快這個過程? 我在本地機器上測試了這個xml。autosuggest組件用於flex中的冗長xmls

+1

我認爲你應該期望有一些放緩w/900K記錄。我會等到用戶鍵入幾個字符,然後加載數據的一個子集。我假設這是應用程序(如Firefox)或搜索引擎(如Google)所做的。 – JeffryHouser

回答

0

對於我的autosuggest小部件,我在keyUp上使用clearTimeout和setTimeout來確定它們何時完成鍵入。如果他們每750毫秒就能打一個鍵(對於一個體面的打字員來說不難),那麼我會等到他們完成打字之後再進行任何搜索(或者在您的案例中進行篩選)。

private var _timeoutID:uint=0; 

private function onKeyUp(event:KeyboardEvent):void 
{ 

    if(event.keyCode == Keyboard.ENTER) 
    { 
     //do search immediately 
     clearTimeout(_timeoutID); 
     doSearch() 
    } 
    else if (event.keyCode == Keyboard.ESCAPE) 
    { 
     //canel search 
     clearTimeout(_timeoutID); 
    } 
    else 
    { 
     //begin timer 
     clearTimeout(_timeoutID); 
     _timeoutID = setTimeout(doSearch, 750); 
    } 
} 
private function doSearch():void 
{ 
    //filter xmlcollection here 
}