2016-06-28 3 views
0

내 angularjs 코드에 문제가 있습니다. 로그인 할 코드를 만들었지 만 현재 사용자가 이미 이메일로 데이터베이스에 있는지 확인해야합니다. 나는 데이터베이스에 두 가지 요청을하려고 생각했다. (두 $ http). 이 숫자가 0이 아닌지 확인하려면 데이터베이스에있는이 이메일의 사용자 수를 얻고, 이메일이있는 사용자 수가 0 인 경우 데이터베이스에 삽입하려면 다른 사용자 수를 얻고 하나는 문제가 있습니다.angularjs 두 요청 흐름

I made a service to verify the user email in database

이 코드가 실행되지만 경고의 전화가 잘못되었습니다 : 내 코드 좀 봐. 경고 ("test2")는 먼저 호출 된 다음 경고 ("test1")로 호출되지만 먼저 확인합니다.

죄송하지만, 지금 막 배우고 있습니다. 이것은 나의 질문이다! 감사!

+0

는 현재 텍스트로, NOT 이미지를 코드를 포함해야합니다. – Laurel

+0

내부에 코드를 붙여 넣은 후'''{}'''을 누르십시오. – vtange

+0

죄송합니다. 이것은 내 첫 게시물 여기에;) –

답변

0

당신은 그 때는() 핸들러 내부에 두 번째 서버 요청을 이동해야합니다. 현재 코드는 단순히 비동기 특성으로 인해 두 개의 서버 요청을 거의 동시에 실행합니다. 당신이 찾고있는 것은이 가까이 뭔가

...

User.verificar($scope.cadastro.email).then(function(usuario){ 
    if(usuario.existe == true){ 
     //existing code 
    } else { 
    //make function call to insert user 
    } 
}); 
+0

아주 좋아! 탁신. 나는 지금 당장 단호했다! 나는 그 사람이 비동기 적이라는 것을 몰랐다. 도와 주셔서 감사합니다 ;) –

0

.then()에 대한 호출이 비동기이므로 코드에서 .then()을 호출 할 때 API를 호출하고 코드를 계속 실행하면 "test2"가 먼저 표시됩니다.

당신은 사용자가없는 아주 잘

0

존재 않을 때 첫 번째 .then() 내부에 두 번째 요청에 통화를 보류 할 필요가 alert("test2")


$location.path(...) 전에 넣어보십시오. 탁신,하지만 아직 문제가 있습니다. 내 함수가 "return false"코드에서 실행되도록 중지해야합니다. 예 :

  • 먼저 이메일이있는 사용자가 선택되었는지 확인합니다.
  • 둘째 : 내 코드는 두 번째 옵션 주먹 실행되는 것을보고

데이터베이스에 사용자를 추가합니다. 먼저 새 사용자를 데이터베이스에 저장하고 두 번째로 확인을 수행합니다. 각도가 비동기 인 경우 두 개의 sequencial 요청을 수행하려면 어떻게해야합니까?

내가 기다리고;)