1

誰でも実行中のタイマー(javascript settimeout)とデータ検索を行うサンプルコードを投稿できますか..

基本的に、このタイマーが行うことは、新しいメッセージを表示することです..

myFunction(param){

//data retrieval operation
//using getJSON.. call displaydata() base on param

settimeout("myFunction()", param, 1000);

}

function displaydata(param){

//processing
alert('test')}

getJSON を使用する必要がありますか? 非同期呼び出しに問題があると思います..

4

2 に答える 2

2

コードで修正する必要があることに気付いた2つのこと。

  • メソッドにいくつかのsetTimeout()誤った引数があります
  • 非同期呼び出しは、次のタイムアウトとメソッドgetJSONの結果の間に競合状態を作成します。getJSON代わりにこれを行ってください:

function yourFunction(params) {  
    jQuery.getJSON("url", {data}, function(data, textStatus){
        // handle your JSON results

        // Call the timeout at the end of the AJAX response
        // This prevents your race condition
        setTimeout(function(){
            yourFunction(params);
        }, 1000);
    }
} 

setTimeout(function(){
    yourFunction(params);
}, 1000);
于 2009-11-03T03:06:47.390 に答える
0

最初のパラメーターは関数リテラルまたは関数参照である必要があり、2 番目のパラメーターはミリ秒である必要があります。

setTimeout( function() {
    getData('param')
}, 1000);

function getData() {
     $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
        function(data){
          $.each(data.items, function(i,item){
            $("<img/>").attr("src", item.media.m).appendTo("body");
            if ( i == 3 ) return false;
          });
        });
}

この例では実際の引数を使用していませんが、簡単に更新してそうすることができます。また、ポーリングしているかどうかもわかりませんでした (これはポーリング/再帰呼び出しを行いません)。

于 2009-11-03T02:56:52.527 に答える