1

有没有办法改善我的脚本运行时间?我有一个创建 2 个列表框的脚本:Listbox1项目是我所有的谷歌网站页面,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;
}  
4

1 回答 1

0

我不认为它会加速这个过程,但你可以只使用一个处理函数来做到这一点:在更改 listBox1 时,清除 listBox 2 并立即重新填充它。需要一些时间的是对网站内容的调用,因此差异可能并不显着,但脚本的“逻辑”会得到改进;-)

查看您的页面,我发现 listBox 2 从未被清除...这是一个临时问题吗?你最近有改变吗?

此外,当在 listBox2 中选择某些内容时应该发生什么?

编辑:根据您的评论,如果您想改善有关 UI 的“响应性”的用户体验,最好的方法是使用客户端处理程序来触发“等待消息”的可见性(例如“更新列表”) . 我通常使用通过客户端处理程序使其可见的动画 gif,并且在服务器处理程序返回时再次使其不可见(即我在服务器处理程序函数中将其设置为不可见)。

这是一个工作示例,只需尝试更改右上角的日期即可。

于 2012-06-30T08:44:19.073 回答