1

スクリプトの実行時間を改善する方法はありますか? 2 つのリストボックスを作成するスクリプトがあります。Listbox1アイテムはすべての Google サイト ページであり、listbox2アイテムはページのサブlistbox1ページです。listbox2スクリプトは正常に実行されますが、すべてのアイテムを取得するのに 2 ~ 5 秒かかることがあります。

ここで私のスクリプトを試すことができます。

そして、ここに私のスクリプトがあります:

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

プロセスが高速化されるとは思いませんが、それを行うには 1 つのハンドラー関数を使用できます。listBox1 を変更して、listBox 2 をクリアし、すぐに再入力します。時間がかかるのはサイトのコンテンツへの呼び出しであるため、違いは重要ではないかもしれませんが、スクリプトの「ロジック」は改善されます;-)

あなたのページを見ると、listBox 2 がクリアされていないことがわかります...これは一時的な問題ですか? 最近何か変えましたか?

また、何かが listBox2 で選択されたときに何が起こるはずですか?

編集: コメントに従って、UI の「応答性」に関するユーザー エクスペリエンスを向上させたい場合は、クライアント ハンドラーを使用して、たとえば「待機メッセージ」の可視性をトリガーするのが最善の方法です (「リストの更新」のようなもの)。 . 私は通常、クライアント ハンドラーで表示したアニメーション GIF を使用し、サーバー ハンドラーが戻ったときに再び非表示にします (つまり、サーバー ハンドラー関数で非表示に設定しました)。

これが実際のです。右上隅の日付を変更してみてください。

于 2012-06-30T08:44:19.073 に答える