2017-11-05 4 views
4

내 질문이 다른 사람들과 다른 점왜 alert()입니까; console.log() 전에 실행하십시오.

저는 ES6 구문을 사용하고 있습니다. 내가 본 다른 질문은 ES5 구문을 사용합니다.

[질문

이유는 무엇입니까 console.log(); 전에 alert(); 실행? 그리고 console.log();alert(); 전에 실행되도록 설정할 수 있습니까?

console.log("Hello!"); 
alert("Hi!"); 
+3

'console.log'가 비동기 적으로 실행되도록 구현 될 수 있습니다. 실행중인 환경에 따라 달라집니다. – AngYC

+0

영어로 비동기 적으로 번역 할 수 있습니까? – SantaticHacker

+0

"비동기식"또는 "비동기식"을 의미합니다. – AngYC

답변

3
console.log("Hello!"); 
setTimeout(() => alert("Hi!"), 0); 

기본적으로 내 코드 :을 console.log()는 기술적 먼저 호출되고이다. 그러나 브라우저 자체를 실제로 다시 그리거나 콘솔을 업데이트하는데도 약간의 시간이 걸립니다. 그것이 스스로를 업데이트 할 수 있기 전에, alert()가 이미 트리거되어 "확인되기 전에 모든 것을 중지하십시오"라고 말합니다. 따라서 console.log에 대한 메시지가 보내지지만 시각적 인 확인은 시간에 이루어지지 않습니다. 0초의 setTimeout에 뭔가를 포장

는 " 모든 것이 & 업데이트 실행이 완료되는 즉시 후 헤이 전화 해."자바 스크립트를 말하는 오래된 속임수


그런 다음 경고를 닫기 전에 몇 분을 기다리고, 경고 대화 상자 전에 console.log(new Date().toString()); 같은 작업을 수행하여이를 확인할 수 있습니다 †. 처음 실행했을 때의 시간을 기록하고 있습니다. 이 아니라 지금은입니다.

+0

5 초 후에'alert(); '를 어떻게 만들 수 있습니까? – SantaticHacker

+0

@SantaticHacker 만약 당신이 원한다면'setTimeout'을 사용하는 것이 좋을 것입니다. 의도 한 용도로 사용하는 것입니다 - 우리가 위에서 다룬이 해킹 된 부작용이 아닙니다. 그러므로 setTimeout (() => alert ("Hi!"), 5000)으로 변경하십시오. (setTimeout의 두 번째 인수는 실행하기 전에 대기하는 밀리 초입니다.) – SamVK

+0

아, 그 수가 초 단위라고 생각했습니다. . 어쨌든 고마워. – SantaticHacker

관련 문제