내 가정은 내가 이미 코드의 다른 관련이없는 부분을 단계별 디버깅하고 있기 때문에, 아약스 응답 콜백 이벤트가 탈출하기 입니다 것입니다. 이 가정이 맞습니까?
예, 방화 광 1.x. Firebug 2.0에서는 fixed이지만 (이 답변을 베타 단계에서 작성한 시점).
예. 다음 코드를 체크 아웃 :
<script type="text/javascript">
function makeRequest()
{
var xhr = new XMLHttpRequest();
xhr.open("GET", "test.php");
xhr.onreadystatechange = function()
{
if (xhr.readyState === XMLHttpRequest.DONE)
console.log("Request finished");
}
xhr.send(null);
debugger;
}
</script>
<button onclick="makeRequest()">Make request</button>
당신이 Request finished
콘솔에 로그인 할 기대할 수 만들기 요청 버튼을 클릭합니다. 최대 1.12.8의 Firebug에서 출력은 2.0에 있지만 콘솔에는 나타나지 않습니다. Firebug 2.0 adapts new debugger APIs이 Firefox에서 노출되어이 문제가 해결 되었기 때문입니다.
onreadystatechange
에 대한 비동기 호출은 지연되지 않습니다. 즉, debugger
키워드로 중지 한 경우에도 여전히 실행됩니다. 따라서 console.log("Request finished")
의 중단 점은 이 아니고이 맞을 것입니다.
비동기 함수를 실행하면 디버거가 스크립트 실행을 계속 대기하는 Chrome, Opera 및 Internet Explorer의 JavaScript 엔진과 차이가 있습니다.
위의 console.log (...)에서 중단 점이 발생하지 않는다는 것에 동의합니다. 그러나 새로운 디버거가 console.log를 인쇄하기를 바랍니다. 나는 디버그 모드와 일반 모드에서 실행될 때 아약스 응답의 관점에서 시스템의 동작이 달라져서는 안된다는 것을 의미합니다. –
Firebug 2.0을 사용해 볼 수 있습니다. 그냥 [addons.mozilla.org에서 최신 베타 버전을 다운로드하십시오] (https://addons.mozilla.org/firefox/addon/firebug/#beta-channel). 비록 그것이 현재 [Aurora version] (https://www.mozilla.org/firefox/aurora/)으로 제공되고있는 Firefox 30 이상이 필요합니다. –