2014-11-19 3 views
0

환영합니다,

콜백없이 동기 자바 스크립트 메서드를 호출하려고합니다. 이 메서드는 POST 비동기입니다.

function someMethod() { 
    var bean; //bean is a proxy object provide by external library 
    if(clicked_onSpecial_field) { 
     if(!bean.isAuthorized()) { //here is a async call 
      return false; 
     } 
    } 

    //a lot of other instructions... 

} 

손 하나에서 보통 clicked_onSpecial_field = false 그래서 콜백의 다른 모든 지침을 넣을 수 없습니다. 다른 한 손에서 bean는 저에게 프록시 객체를 제공합니다. 이 경우 어떤 방법으로 $.ajax을 사용할 수 있는지 알 수 없습니다.

도와 주시겠습니까?

+0

어떻게 정상적으로 결과를 bean.isAuthorized()에서 다시 받습니까? 그리고이 결과는 페이지 사용 중에 이전에 일어난 일을 기반으로 바뀔 수 있습니까? – Nzall

+0

처음이 메서드를 호출 할 때입니다. 이론 인증 상태가 시간에 따라 변경 될 수 있기 때문에 매번 체크인하는 것을 선호합니다. 하지만 페이지로드에이 변수를로드하라는 제안을 숨겨 줘서 고맙습니다. :) –

답변

1

콜백없이 동기식 자바 스크립트 메소드를 호출하려고합니다. 메서드가 POST 비동기입니다.

본질적으로 비동기 인 메서드는 동 기적으로 반환되도록 호출 할 수 없습니다. 그건 절대 완전히 불가능합니다. 자세한 내용은 How do I return the response from an asynchronous call?을 참조하십시오.

일반적으로 clicked_onSpecial_field = false이므로 콜백에는 다른 모든 지침을 넣을 수 없습니다.

물론 가능합니다. 당신이 그것에서 어떤 결과를 전달해야하는 경우 다음 당신은뿐만 아니라 거기에 콜백을 사용할 필요가 거라고, 그래서 someMethod이뿐만 아니라 지금은 비동기 것을

function someMethod() { 
    var bean; //bean is a proxy object provide by external library 
    if (clicked_onSpecial_field) { 
     bean.isAuthorized(goOn); // pass goOn as callback 
    } else { 
     goOn(true); // just call it directly if there's no async action 
    } 

    function goOn(cond) { 
     //a lot of other instructions... 
    } 
} 

알 수 있습니다.