Revio
795
2019-01-28 09:36:20
13
705

메일전송중 ajax 안에서의 화면 컨트롤 하는부분에대해질문좀드리겠습니다.


현재 java로 매일발송하는 로직은 만들어놨는데

jsp 에서 for문안에 ajax를써서 ajax 한번당 메일 하나씩 전송결과를 화면에 뿌려주도록 하고있습니다.

물론 ajax는 동기방식으로 처리해놓앗구요


for (var i = $("#list_right").children("li").length-1; i >= 0; i--) {
			
			console.log("증감 for문 : " + i);
			ajaxMngrs("test/sendInfoShareMail", "json", false, "&user_email=" + $("#list_right").children("li").children("div").children(".item_03")[i].textContent, function(result) {
				
				console.log("발송 결과 : " + result);
				console.log(100 / (i+1));
				
				if(result == 1) { // 메일발송 성공
					
					console.log("메일발송 성공");
					$("#gage").css("width",100 / (i+1) + "%");
					$("#percnt_gage").text(100 / (i+1) + "%");
					$("#mail_send_result_" + i).text("메일 발송 성공");
					
				}else { // 메일발송 실패
					
					console.log("메일발송 실패");
					$("#gage").css("width",100 / (i+1) + "%");
					$("#percnt_gage").text(100 / (i+1) + "%");
					$("#mail_send_result_" + i).text("메일 발송 실패");
					
				}
				
			});
		}
		
		// 메일 모두 발송 후
		console.log("메일발송 완료");
		$("#sendmail_text").text("메일 발송을 완료하였습니다.");


이런식으로 ajax안에 화면이 컨트롤 되도록 css 설정을 해놓은부분이있습니다.

그런데 이상하게도 for문안에서 .css 변경해주는 스크립가 모든 for문이 다돌고 반응을 합니다...

제생각으론 for문을 한번씩돌때마다 "#gage" 가 50% 100%  차올라야 하는데

처음에 0 이엿다가 for문이 다돌고나면 한번에 100이됩니다..

script 상에 문제같은데 혹시 원인과 해결방안을좀 제시해주셧으면합니다

0
0
  • 답변 13

  • 어쩌다
    4k
    2019-01-28 10:24:28
    ajaxMngrs
    동기형 인가요.?
    0
  • 아이러니y
    1k
    2019-01-28 10:35:18

    동기식이라는 가정하에


    콜백 함수 안에 넣으시면 될거같은데요

    0
  • Revio
    795
    2019-01-28 10:45:03

    어쩌다 

    네 동기형입니다

    비동기로 구현했을때 메일 수신여부에따른 true false 값을 한번에 가져오기때문에

    안될것같아 동기로해서 메일 하나발송될때마다 true , false 값을 매번 받아오게했습니다

    0
  • Revio
    795
    2019-01-28 10:46:09

    아이러니y 

    ajax success 안에 저스크립트를 넣으라는말씀이신가요 ?

    0
  • 어쩌다
    4k
    2019-01-28 10:48:56

    말씀대로라면 

    아래 로그가 순차적으로 length 만큼 찍여야 하는데 그런가요.?

    만약 아래 로그가 순차적으로 안찍힌다면 함수 자체에 문제가 있는듯 보입니다.


    console.log("증감 for문 : " + i);
    console.log("메일발송 성공");
    0
  • 아이러니y
    1k
    2019-01-28 10:50:12

    넵 success 안에 넣으면 동기식이면 문제안되보여서영~

    0
  • Revio
    795
    2019-01-28 11:05:55

    어쩌다 


    로그는 잘찍힙니다 ㅜㅜ

    0
  • Revio
    795
    2019-01-28 11:06:15

    아이러니y 

    success 안에 넣어도 결과는 같네요 ...ㅜ

    0
  • 어쩌다
    4k
    2019-01-28 11:11:32

    앵 단지 저 두건이면 속도가 빨라 눈이 인지 못하는거 일수도 있어요...

    시간차가 어찌되나요...?

    임의로 한 100건 넣어서 테스트 해보시길..

    1
  • 아이러니y
    1k
    2019-01-28 11:14:11

    어쩌다님 말씀처럼 for문으로 i를 100까지 돌려서 한번 테스트해보세요


    콘솔을 찍어보시던지요아니면

    1
  • Revio
    795
    2019-01-28 11:19:09

    두분말씀대로 단지 속도가빨라서 그런거같네요 ...

    좋은 말씀 두분다너무감사합니다~

    0
  • yamanin
    1k
    2019-01-28 11:20:12

    동기화된 상태에서 DOM 렌더링이 일어 나지 않을꺼에요.

    비동기로 구현해야 원하는데로 될듯합니다.

    0
  • Revio
    795
    2019-01-28 11:36:26

    yamanin 

    비동기로 구현하게되면

    제가원하는 동작을 화면상에 못나타내지안을까요

    메일이 5건 발송 된다하면

    20% 40% 60% 80% 100%

    이런식으로 로딩바에 표출해야하는데

    비동기로 가능한일인가요 ,,?

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.