2015-01-16 4 views
0

저는 자바 스크립트와 AJAX에서 작업하고 있습니다. 로그인 할 서버를 호출합니다. 로그인이 사실이라는 응답을 보냅니다. 그런 다음 서버에 다시 전화하여 사용자에 대한 모든 정보를 수집해야합니다. 전화를 즉시하면 서버는 사용자가 로그인하지 않은 응답을 되돌려 보낼 것입니다. setTimeout (myFunction(), 1000) 또는 setInterval (myFunction(), 1000)을 사용할 수 있습니다. 두 번째 전화 걸기. 나는 나머지 코드를 실행하지 않고 계속하기 전에 적절한 응답을 기다리는 깨끗한 방법이 있는지 궁금해했다. 가장 큰 질문은 콜백 응답에 모든 것을 넣지 않고 어떻게 할 수 있을까요? 나는 코드가 다소 모듈화되기를 원한다.자바 스크립트 흐름 지연

+1

내가 중복으로 표시 한 질문은 정확히 같은 질문이 아니지만 맨 위에있는 대답 *에 나열된 기술은 정확히 사용자가 사용해야하는 것입니다. –

+0

로리는 뭐하고 있니? 질문은 Ajax 응답을받는 것과 아무런 관련이 없습니다. Michael은 응답 (두 번째 및 세 번째 문장)을 얻지 만 두 번째 'ok'응답이 올 때까지 다른 코드가 실행되는 것을 지연하려고합니다. (오버레이로 UI 차단, 중첩 된 Ajax 호출 설정 등) – skobaljic

+0

코드를 표시하고 문제가 무엇인지 설명하십시오. 귀하의 질문은 단순히 명확하지 않습니다. Javascript는 콜백에서 비동기 응답을 처리합니다. 이것이 비동기 응답을 처리하는 유일한 방법이므로 콜백을 피하려고 시간을 낭비하고 있습니다. 약속은 콜백을 처리하는보다 우아한 방법이지만 여전히 콜백입니다. – jfriend00

답변

1

비동기 기술을 사용하여 프로그래밍해야합니다. 응답을 처리하는 일반적인 아약스 jQuery를에 전화 한 다음과 같을 것이다 :

$.ajax(...).then(function(result) { 
    // put code here that uses the result 
    // then continue on with other code that should run after the result was processed 
}); 

// code here will run BEFORE the ajax call completes 

하나 개 아약스 호출을 실행하려면 다음 그 이후 또 하나, 당신이 중 하나를 체인하거나 실행할 수있는 경우 첫 번째 완료 콜백 내에서 두 번째 :

$.ajax(...).then(function(result) { 
    // process result of the first 

    // run second ajax call 
    return $.ajax(...) 

}).then(function(secondResult) { 
    // code here when second ajax call is done 
}); 
+0

그는 이미 당신이 말하는 것을 생각합니다. 그는 요청 사이에 무엇을해야하는지 묻습니다. 나는 로더와 모달을 보여주는 것이 몇 가지 표준이라고 생각합니다. – skobaljic

+1

@skobaljic - 나는 그것을 의심합니다. OP는 타임 아웃을 사용하여이 기술이 사용되는 경우 필요하지 않은 ajax 호출을 "대기"하려고합니다. 언제나처럼, OP가 실제 코드를 포함한다면 모든 것이 훨씬 명확해질 것입니다. – jfriend00

+0

그는 10 개의 요청을 보내고 로그인을 기다리고 있음을 알고 있습니다 (그는'setInterval (myFunction(), 1000)'). 계속해서 그는 사용자가 로그인 할 때까지 다른 코드 실행을 허용하고 싶지 않습니다. – skobaljic

관련 문제