2011-11-17 7 views
0

그냥 함수 의 코딩 과정을 이해하고 싶었습니다. 이 기능을 실행하면, 첫 번째 대화가 Hello 될 것이며, 두 번째는, 오른쪽 World 것,왜 ajax fn() 코드 시퀀스를 따르지 않습니다

function test() { alert("Hello"); alert("World");  } 

나에게 하나의 간단한 예를 해주지? 그러나 왜 아약스에서는 코딩 구조가 같은 방식으로 진행되지 않습니다.

ajaxRequest.open("POST", "pos/write", true); 
ajaxRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 

ajaxRequest.send("user=Ram"); /* this line can be written anywhere */ 

ajaxRequest.onreadystatechange = function() { 
if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200){ 
        alert("done"); }   
// ajaxRequest.send("user=Ram"); 

당신이 볼 수 있듯이, .send('user=Ram').readyState 아래 & 위의 기록하지만 두 경우에 성공적으로 실행됩니다. 이 내가 이해하려면 무엇을, 왜 안 ajax FN은() 당신은 .send()비동기 떨어져 있다는 사실을 양지해야하는 코드 시퀀스

+0

끝 부분에 뭔가 빠져있는 것처럼 보입니다. – Ben

+0

@Ben : 예, 방금 요점을 얻지 못하는 js의 일부를 작성했습니다. – user1010399

답변

1

따라야 않습니다. .send()이 호출 된 직후 에서 응답을 수신하는 동일한 개체에 onreadystatechange 처리기를 연결합니다. 요청이 시작된 후에 나타나더라도 응답을 받기 전에 처리기를 실행하고 연결하는 시간이 항상있을 것이며 XHR 개체는 readyState4으로 변경하고 onreadystatechange 이벤트 처리기가 실행됩니다.

+0

오 응답이 다시 오기 전에 항상 처리기를 연결하고 실행하는 데 시간이 필요합니다. 너의 요점이있어. 데이브 감사합니다. – user1010399

관련 문제