2016-09-27 7 views
1

JavaScriptフロントエンドでcaseステートメント内でコードビハインド関数呼び出しを追加すると、対処されていないケースその機能を持つものはありません。JavaScriptからケースステートメント内でバックエンド関数呼び出しを追加すると、かなり遅くなる

// Gets info from updatepanel display once it's been updated 
     function EndRequestHandler() { 
      switch (tab) { 
       case 'A': 
        cData = JSON.parse('<%=func1() %>'); 
        console.log(cData[0].municipality + ' ' + cData[0].lat + ' ' + cData[0].lng); 

        fillListBox(cData); 
        break; 
       case ('B' || 'C'): 
        lat = document.getElementById('<%=label1.ClientID%>').textContent; 
        lng = document.getElementById('<%=label1.ClientID%>').textContent; 
        console.log(lat + ' long ' + lng); 

        if (vLat.length == 0 || vLng.length == 0) { 
         if (tab == 'B') { 
          eMsg = 'Invalid Zip Code.'; 
         } else{ 
          eMsg = 'Invalid Coordinates.'; 
         }; 
         alert(eMsg); 
        } else { 
         rezoom(cProx); 
         markRadius(cProx); 
         console.log('check'); 
        }; 
        break; 
      };// end switch() 

     };// end EndRequestHandler() 

私はcase 'A'とテスト'B'または'C'をコメントアウトアプリケーションは非常に迅速に動作する場合、私はcase 'A'を追加分は、それは私が唯一'B'、または'C'

+0

おそらく無関係ですが、 'case( 'B' || 'C')'はあなたがしていると思っていることをしていません。 –

答えて

2

をテストしていた場合でも、全部が遅くなりますまず第一に、Javascriptは単一のcaseのように複数の大文字と小文字を許可しません。実際には、​​を式として評価します。これは'B'に等しくなります。だからcase ('B' || 'C'):は実際には'B'と一致します。 'B'または'C'のいずれかと一致するには、次の2つの文case使用する必要があります、または別の行に示すように

case 'B': case 'C': 

を彼らは1行にすることができます。 breakがないので、case 'B'case 'C'になります。 tab変数が'B'または'C'のいずれかに等しい場合、その下のコードが実行されます。

遅い限り、私は<%=func1() %>があなたの問題だと思っています。 Javascriptにデータを渡すために、ASPコードで補助機能func1を呼び出しています。 ASPは、ページが最初にロードされたとき、Javascriptコードが実行される前にサーバー上で実行されます。これがcaseステートメントが実行されるかどうかにかかわらず、コードをスローダウンさせる理由です。

なぜ機能が遅いのかを調べたり、コードをリファクタリングしてその機能を使用してそのデータをASPからページに渡す必要はありません。そのケースが実際に実行されている場合は、AJAXを使用してサーバからダウンロードすることができます。他のケースをまったく遅らせるべきではありません。

関連する問題