-3

カスタム コントロールが読み込まれるたびに呼び出される関数が 1 つあります。以下のコードを参照してください。

function load()
{
getdata();
}

function getdata()
{

  $. ajax({
 url://remote url,
type:"get",
success:function(data)
{
//going to set the data to my control
}

});
}

そのため、成功のコールバック関数は「データ」を返す (つまり、リモート URL からデータを取得する) のに時間がかかりますが、load() クライアント側メソッドは完了し、コントロールのレンダリングを行います。そのため、成功関数がリモート URL からデータを返すまで load() メソッドを待機する必要があり、load() 関数が完了すると、データに基づいてコントロールをレンダリングします。

load() 関数の実行方法は、コールバックが完了するのを待つ必要があります。

ありがとう、

シヴァ

4

2 に答える 2

4

1) クライアント側のレンダリング コードを成功ハンドラ内に配置します...

2) 別のメソッドに分割し、成功ハンドラから呼び出します。

どちらの方法でも、ロード関数が完了し、データが返される前に UI がレンダリングされるという問題が解決されます。

于 2013-05-08T17:19:03.193 に答える
1

このように load() でコールバック関数を作成できます。

function load()
{   
  getdata(function(data){
      alert('done')
      // do something with data             
  });

}

function getdata(cb)
{

    $. ajax({
    url:"..",
    type:"get",
    success:function(data)
    {
      //send data back to load
      cb(data);
    }

    });
}

load();
于 2013-05-08T17:20:46.453 に答える