Улучшите время выполнения моего скрипта
Есть ли способ улучшить время выполнения моего скрипта? У меня есть скрипт, который создает 2 списка: Listbox1
элементы - это все страницы моего сайта Google, listbox2
элементы это подстраницы listbox1
стр. Сценарий работает нормально, но иногда требуется от 2 до 5 секунд, чтобы получить все listbox2
Предметы.
Вы можете попробовать мой сценарий здесь.
И вот мой сценарий:
function doGet()
{
var app = UiApp.createApplication();
//GUI with 2 listbox
//Listbox1: onclick > lbox1onclick(e), onchange > lbox1onchange(e)
app.add(app.loadComponent("MyUrlParser"));
var lbox1 = app.getElementById('ListBox1');
lbox1.addItem(' ');
var lbox1_Item = SitesApp.getSite('phichdaica').getChildByName('manga').getChildren();
for(var i = lbox1_Item.length-1; i >= 0; i--)
{
lbox1.addItem(lbox1_Item[i].getTitle());
}
return app;
}
function lbox1onclick(e)
{
var app = UiApp.getActiveApplication();
var lbox2 = app.getElementById('ListBox2');
lbox2.clear();
return app;
}
function lbox1onchange(e)
{
var app = UiApp.getActiveApplication();
// var value = e.parameter.lbox1;
var lbox1value = e.parameter.ListBox1;
var lbox2 = app.getElementById('ListBox2');
var lbox2_Item = SitesApp.getSite('phichdaica').getChildByName('manga').getChildByName(lbox1value).getChildren();
for(var i=lbox2_Item.length-1; i >= 0; i--)
{
lbox2.addItem(lbox2_Item[i].getTitle());
}
return app;
}
1 ответ
Я не думаю, что это ускорит процесс, но вы могли бы использовать для этого всего одну функцию-обработчик: измените listBox1, очистите listBox 2 и немедленно обновите его. Что требует времени, так это обращения к контенту сайта, так что разница может не быть существенной, но "логика" вашего скрипта будет улучшена;-)
Глядя на вашу страницу, я вижу, что listBox 2 никогда не очищается... это временная проблема? Вы что-то изменили в последнее время?
Кроме того, что должно произойти, когда что-то выбрано в listBox2?
РЕДАКТИРОВАТЬ: после вашего комментария, если вы хотите улучшить взаимодействие с пользователем относительно "отзывчивости" вашего пользовательского интерфейса, лучше всего использовать клиентские обработчики, например, для запуска видимости "сообщения ожидания" (что-то вроде "Обновление списка"), Я обычно использую анимированный GIF, который я сделал видимым с помощью обработчика клиента, и который снова становится невидимым, когда возвращается обработчик сервера (т.е. я устанавливаю его невидимым в функции обработчика сервера).
Вот рабочий пример, просто попробуйте изменить дату в правом верхнем углу.