2011-09-26 3 views
0

이 코드가 실행 된 후 어떤 콘솔 로그가 될 수 있습니까?이미지 src 속성을 설정 한 직후에 이벤트를 불러올 수 있습니까?

var img = new Image; 
img.onload = function() { console.log('B'); }; 
img.src = 'image.jpg'; 
for (var i=0;i<100000;i++) { 
    console.log('A'); 
} 

내가 알고있는 바로는 A...AB 일 것입니다. 하지만 A...B...A 또는 BA...A 일 수 있습니까? 예를 들어, image.jpg 파일이 매우 작고 연결 속도가 매우 빠르면

답변

0

그들 중 하나 일 수 있습니다. 이미지로드에 걸리는 시간을 알 수 없습니다. 이미지를 캐싱하여로드 시간을 최소화 할 수도 있습니다.

+0

'load' 이벤트를 사용하는 것이 신뢰할 수 없다는 점도 주목할 가치가 있습니다. http://api.jquery.com/load-event/의 "주의 사항"섹션을 참조하십시오. –

+1

하지만 자바 스크립트는 단일 스레드이므로 루프 안의 다른 코드는 실행할 수 없으므로 onload 이벤트는 실행할 수 없습니다. 스레드가 사용 중이기 때문에 호출 될 수 있습니다. 맞아? –

+0

@Andrey 실제로, 당신 말이 맞아 보이는군요! JSFiddle 및 [this answer] (http://stackoverflow.com/questions/3939315/are-callbacks-always-asynchronous/3939351#3939351)의 모든 테스트는'main()'함수가 실행을 완료해야한다는 것을 나타내는 것 같습니다. 비동기 이벤트가 트리거 될 수 있습니다. 재미있는 - 나는 항상 이벤트가 다른 스레드에서 실행되었다고 생각했다. –

관련 문제