2017-10-14 4 views
1

JavaScript機能の読み込み待機画面は、デバッグ時またはスクリプトの一時停止時にのみ表示される問題があります。 。私が直接実行しようとすると、まったく表示されません。Javascript:JavaScript関数の読み込み待ちスクリプトをデバッグする、またはスクリプトを一時停止するときにのみ表示されます

$('#btnPesquisar').click(function() { 
    $.ajax({ 
     method: 'GET', 
     url: '<%= ResolveUrl("LiberarBoleto.aspx/onSearch") %>', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     data: { pv: JSON.stringify($('#txtVenda').val()), imob: JSON.stringify($('#drpDownImob').val()) }, 
     success: function (result) { 
      console.log('Passo 1') 
      showProgress(); 
      console.log ('Sleep') 
      sleep(10000); 

      ProcessVendas(result); 
      sleep(10000); 
      console.log('Passo 2') 
      hideProgress(); 
      console.log('Passo 3') 
     } 
    }); 
}); 

function showProgress() { 
    var updateProgress = $get("<%= UpdateProgress1.ClientID %>"); 
    sleep(10000); 
    updateProgress.style.display = "block"; 
    sleep(10000); 
    console.log('Exibição da Tela Aguarde Carregando Concluida') 
    //updateProgress.style.display = "none"; 

}; 

function hideProgress() { 
    var updateProgress = $get("<%= UpdateProgress1.ClientID %>"); 
    updateProgress.style.display = "none"; 
} 

function sleep(milliseconds) { 
    var start = new Date().getTime(); 
    for (var i = 0; i < 1e7; i++) { 
     if ((new Date().getTime() - start) > milliseconds) { 
      break; 
     } 
    } 
} 
+0

を」である何画面の読み込みを待ちますか?あなたのコードに具体的にどこに問題が起きていますか?これらの 'sleep()'呼び出しの目的は何ですか? – David

+0

JavaScriptであなたが望むものではない "睡眠"があります。他のプログラミング言語では良いですが、JSではできません。 – Mouser

答えて

0

ここで大きな問題は、JavaScriptを完全同期として扱い、getリクエストではないことです。したがって、getリクエストをjQueryを使用して作成し、getリクエストがロードされるまでJavaScriptをスリープ状態にします。ただし、すべてのコードを終了して読み込み画面を非表示にするには、おそらく10秒待つだけで十分です。

jQueryのgetの結果を得る正しい方法でスリープ機能を破棄して、更新機能(showprogress)をビルドします。

そのドキュメントの非同期の

$.get("test.cgi", { name: "John", time: "2pm" }) 
    .done(function(data) { 
    alert("Data Loaded: " + data); 
}); 

詳細から例:上記の先端で

Easy to understand definition of "asynchronous event"?

0

次のように、私はこの問題を解決:

$('#btnPesquisar').click(function() { 
     $.when(
      $.ajax({ 
       method: 'GET', 
       url: '<%= ResolveUrl("LiberarBoleto.aspx/onSearch") %>', 
       contentType: 'application/json; charset=utf-8', 
       dataType: 'json', 
       data: { pv: JSON.stringify($('#txtVenda').val()), imob: JSON.stringify($('#drpDownImob').val()) }, 
       success: function (result) { 
        //console.log('Passo 1') 
        ////showProgress(); 
        //// console.log ('Sleep') 


        //console.log('Passo 2') 
        ProcessVendas(result) 

        //console.log('Sleep') 
        sleep(1000); 


       } 
      }).then(showProgress())).done(function() { hideProgress() }) 



    }); 
関連する問題