0

我有一个自动建议库,我一直在我的项目中使用它。我现在有一个文本输入,我必须在其中使用这个库。但这次输入有大约 900,000 条记录。即,具有 900,000 个节点的 xml。当我将它与组件一起使用时,它可以工作,但它变得很慢,可能是因为在每次按键时过滤了 xmllistcollection。每次按键都需要 2-3 秒来刷新。有没有办法加快这个过程?我在本地机器上测试了这个 xml。

4

1 回答 1

0

对于我的自动建议小部件,我在 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
}
于 2013-04-02T21:32:59.413 回答