В Javascript я хочу создать обработчик щелчка мыши. Затем я хочу иметь возможность «ожидания занятости» в течение нескольких секунд перед запуском следующей строки кода. * Но в «ожидании занятости» я все еще хочу иметь возможность обрабатывать события щелчка мыши.
Почему следующий код полностью запускает цикл while
, а ЗАТЕМ активирует обработчик? (например, почему событие обработчика щелчка мыши никогда не вызывается в середине цикла ожидания while
?)
<html>
<body>
<p id="debugMessageElement"> </p>
<script type="text/javascript">
canvas=document.createElement("canvas")
var ctx = canvas.getContext("2d");
canvas.width = 840;
canvas.height = 560;
document.body.appendChild(canvas);
var mouse_input = function(event){
document.getElementById("debugMessageElement").innerHTML = event.pageX + ", " + event.pageY + "<br />"
}
canvas.onmousedown = mouse_input;
timeallowed = 3
start = Date.now()
while(true){
now = Date.now()
delta = now - start
if(delta >= timeallowed*1000){
document.write("" + timeallowed + " seconds has passed")
break;
}
}
</script>
</body>
</html>
* Причина, по которой я разрабатываю свой код, как указано выше, в конечном итоге заключается в том, что я хочу сделать что-то вроде этого:
for(p in person){
for(t in person[p].shirts){
busy_wait_5_seconds() //However, I want to process mouse clicks in these five seconds.
//THEN move on to the next shirt... After five seconds...
}
}
P.S. если вы собираетесь протестировать этот код, обратите внимание, что я использовал холст HTML5, поэтому некоторые браузеры могут не работать?
debugMessageElement
. Может вызвать проблемы.. - person Adam Eberlin   schedule 26.09.2011