Улучшите время выполнения моего скрипта

Есть ли способ улучшить время выполнения моего скрипта? У меня есть скрипт, который создает 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, который я сделал видимым с помощью обработчика клиента, и который снова становится невидимым, когда возвращается обработчик сервера (т.е. я устанавливаю его невидимым в функции обработчика сервера).

Вот рабочий пример, просто попробуйте изменить дату в правом верхнем углу.

Другие вопросы по тегам