コールバック関数の戻り値が大域変数に与える割り当て問題



            今日は問題が発生しました.jsでは、コールバック関数の戻り値はグローバル変数に対して割り当てられています.ネット上の解決策は主に非同期のasync:falseに変更されています.記憶力は悪いペン先に及ばないです.
            ソースコードは以下の通りです
  
 $('#loginSubmit').click(function(){
    		 
	    		var useremail = $("#login_email").val();
	    		var password = $("#login_password").val();
	    		var emailHash = HASH.md5(useremail);
	    		var newPsd = 0;

	    		AUTH.fnPreLogin(emailHash,function(json){
	    			
	    		           console.log("success, token = " + json.data.pre_login_token);
	    		   
	 			   newPsd = HASH.md5(HASH.md5(password)+json.data.pre_login_token);
	 			   console.log("newPSD: " + newPsd);
	 			   
	 			   idcode = json.data.pre_login_token;
	 			   console.log("idcode: "+idcode);
	 			
	 			   
	 		   });
	    		
	    		AUTH.fnLogin(emailHash,newPsd,idcode,function(json){
	    			   console.log("success, token = " + json.data.token);
		        });		     
    	 });
       エラーfnLoginはnewPsdを呼び出した時、newPsdはコールバック関数に値を割り当てられませんでした.その中のfnProLoginとfnLoginの定義は以下の通りです.
function fnPreLogin(email,callback){
		   
		   	   console.log("fnPreLogin");
			   var myDate = new Date();			   
			   var preData = {
					   email: email,
					   time:myDate.toLocaleTimeString()
			   };
			  $.get(url_preLogin, preData, callback);
		   
		}  
	   
	   function fnLogin(email,psd,code,callback){
		   
		   	   console.log("fnLogin");
			   var myDate = new Date();	

			   var data = {
						email: email,
						password: psd,
						idcode: code,
						time:myDate.toLocaleTimeString()
			   };

			   $.get(url_login, data, callback);
		} 
              fnProLogin()で非同期async:falseに変更し、ajax方法で実現すれば、次のように変更できます.
 function fnPreLogin(email,callback){
		   
		   	   console.log("fnPreLogin");
			   var myDate = new Date();
			   
			   var preData = {
					   email: email,
					   time:myDate.toLocaleTimeString()
			   };
			   
			   $.ajax({
				   url: url_preLogin, 
				   async: false,
				   type: "GET",
				   data:  preData,
				   success: callback
			   });
		}