【发布时间】:2016-05-15 16:20:43
【问题描述】:
1) 如何使 while 循环在后台运行,尽管有 while 循环,网页仍会响应用户点击。 如果我启动字符生成while循环,我无法将数据输入到“输入”,因为生成循环占用了所有资源。实际上,每当我点击“开始”时,我都会收到网页没有响应的消息,询问我是否要停止它。选择“停止”后,我看到字符已生成。然而,在输入框输入字符并用“停止”触发器停止程序非常困难,通常网页崩溃。
2) 如何让多个 jquery while 循环同时运行,另外,网页应该是响应式的并且用户可以访问。
<!DOCTYPE html>
<html>
<head>
<script src="theme/assets/js/jquery/jquery-2.2.3.min.js"></script>
</head>
<body>
<div id="Start"> <b> Start </b> </div>
<div id="Stop"> <b> Stop </b> </div>
<br><br> <div id="random"> </div>
<br><br> <input id="input" type="text" size="500">
<script>
// how to manage without global variables? how to pass variables to the function
var flag = false;
var charstr = "zxcvbnm,\.\/asdfghjkl;\'qwertyuiop[]\\`ąčęėįšųū90\-ž";
var charstrL = charstr.length;
$("#Start").click( function() {
$("#lesson").text("clicked Start");
flag =true;
$(this).val('flag');
while(flag){
setInterval(function() { // this code is executed every 500 milliseconds:
var rand = Math.random();
var num = Math.floor( ( Math.random() * (charstr.length -1) ) );
$("#lesson").text(charstr[num]);
}, 500);
}//while
}); // $("#Start").click( function() {
$("#Stop").click( function(){
flag=false;
$(this).val('flag');
alert('clicked Stop');
});
</script>
</body>
</html>
【问题讨论】:
-
Javascript 是单线程的。
-
@DrewKennedy:不,JavaScript 不是单线程的。甚至在浏览器上也没有。 JavaScript,语言,对线程的话题保持沉默。这是一个环境问题。在浏览器中,有一个主 UI 线程和任意数量的 Web 工作线程。
-
@T.J.Crowder How to do Threading in Javascript 当然这是从 2011 年开始的,所以如果有什么变化,我很乐意纠正
-
谁说你不行,你可以用web workers最新的浏览器htmlgoodies.com/html5/tutorials/…
-
@DrewKennedy:这个答案不正确。 2011年也是不正确的,而且上面已经有cmet指出不正确了。
标签: javascript jquery