2014-09-19 156 views
-1

我使用函數App.loadTo在任何地方加載一些數據。在顯示任何內容之前,我需要延遲(使用form-styler插件,重繪表單)。我試圖setTimeout和setInterval的功能,但它們只運行一次,即調用App.loadTosetTimeOut/setInterval只運行一次

1)(PARAMS) - 延遲工作

2)具有相同PARAMS調用App.loadTo(PARAMS) - 延遲犯規工作

我試圖

  tmp = setInterval(function() { 
       console.log('I show all invisible!', params.where); 
       $(params.where).css({ 
        'visibility': 'visible' 
       }); 
       $('#preloader').remove(); 
       clearInterval(tmp); 
      }, 110); 

哪裏我犯了一個錯誤,但沒有成功以下?

App.loadTo = function loadTo(params) { 
    $.ajax({ 
     url: '/' + params.controller + '/' + params.action + '', 
     type: 'POST', 
     dataType: 'json', 
     data: params.sentData, 
     success: function(server_answer, textStatus) { 
      if (server_answer.result == 'success') { 
       if (params.hasOwnProperty('parseHtml')) { 
        // Data parsing 
        var html = $(server_answer.html); 
        html = $(html).find(params.parseBlock); 
       } else { 
        var html = $(server_answer.html); 
       } 

       // Inserting data 
       $(params.where).empty().html(html).css({ 
        'visibility': 'hidden' 
       }).before('<div id="preloader" style="width: 100%; background: url(&quot;i/preloader.gif&quot;) no-repeat scroll 50% center transparent; min-height: 140px; height: 100%;"></div>'); 

       // Delay before display 
       setTimeout(function() { 
        console.log('I show all invisible!', params.where); 
        $(params.where).css({ 
         'visibility': 'visible' 
        }); 
        $('#preloader').remove(); 
       }, 110); 
      } else { 
       alert_jq_ui(server_answer.error_txt); 
      } 
     }, 
     error: function(xhr, errmsg, err) { 
      alert_jq_ui(xhr, errmsg, err); 
     } 
    }); 
}; 
+0

'的setTimeout()'運行一次。 – PHPglue 2014-09-19 21:01:49

+0

setInterval too – user2455668 2014-09-19 21:04:06

+0

OP表示:當第二次調用函數時,間隔不會觸發。邏輯問題,但。 – 2014-09-19 21:06:18

回答

0

嘗試使用clearTimeout()清除setTimeout;如果你選擇去與,否則如果你比較想嘗試setInterval的方法,嘗試清除它的本身之外,我希望這有助於

0

我創建了一個小小提琴,剝奪了你的代碼... http://jsfiddle.net/gnsnvjtz/

最大的區別就在這裏是這樣的:

var App = { 

    loadTo: function() { 
     ///loadTo code goes here ... 
    } 

} 

,而不是`App.loadTo =功能loadTo(PARAMS)...