2016-10-19 8 views
0

defaultManager()login()は、ユーザーがログインしているかどうかを確認する機能です。ログインにはtrueまたはfalseが返されます。ログインがfalseの場合、login()関数がdefaultManager()のさらなる実行を停止する方法はありますか? falseを返すelse ifを使用してチェックせずに次の行の実行を中断する方法は?

login関数自体の下にあるものは何でも停止しますが、私はdefaultManager()login()に行われた呼び出しの下にあるものは何でも停止します。

利用可能な方法は、loginによって返された値を格納し、if..elseを使用して実行するステップを決定することです。しかし、私は他の場合には使用しない。..

jQuery(document).ready(function($) {  
    var myModule = (function(sendTo) {  
     var self = { 
      init: function() {  
       self.defaultManager();      
      },  
      login: function() {      
       var userId = this.getSetting('userId');  
       if (userId < 0) { 
        return false; 
       }  
       return true; 
      },  
      getSetting: function(requiredSetting) {  
       var settings = JSON.parse(sessionStorage.getItem('conversekitGlobalSettings')); 
       return settings[requiredSetting]; 
      },  
      defaultManager: function() { 
       //i prefer not to do this 
       var login =this.login(); 

       if (login == 1) { 
        //do this 
       } else { 
        //do this 
       } 

       //is this can be done? 
       this.login(); 
       //must not execute whatever written here if call 
       //to the login() is false       
      } 
     };  
     return self;    
    })(interface);  
    myModule.init(); 
}); 
+0

あなたは既に 'defaultManager()'の中から 'login()'を1回呼び出して、その結果に応じて 'if'条件を持っています。実行したいロジックを 'if'ステートメントの正しいセクションに置くだけです...? 'if(login == 1)'ではなく 'if(login)'も使います。 –

答えて

0

トリックの一つソートはショートカットとしてAND演算子(&&)を使用して、あなたが関数内で実行取得したい残りのものをラップすることです。 & &オペレータは、左辺が厳しい値を返す場合にのみ、右辺を実行します。

login() && whenLoggedIn(); 

function whenLoggedIn(){ 
    // do stuff when login has returned true 
} 

しかし、あなたのケースでは、他の場合は本当に多く間違っていないと思います。例えば、このトリックは、(厳密な)jslintチェックを渡しません。なぜなら、その最初の行にステートメントや代入がないからです。

関連する問題