HTML / JavaScript:如何在运行其他代码时运行循环?

时间:2015-12-18 06:08:01

标签: javascript html function loops while-loop

我希望代码每秒钟只能算一个。但是,我也希望能够在其旁边运行其他代码。

示例:

while(true){
Number + 1 + OtherNumber = Number
}

也可以同时运行:

function onButtonPress() { 
OtherNumber++
}

注意:我不想间隔增加otherNumber,而是按一下按钮。

2 个答案:

答案 0 :(得分:2)

您可以使用setInterval

var intervalId = setInterval(function() {
    OtherNumber++;
}, 1000);

它会使OtherNumber大约每秒增加一次。

setInterval返回interval的ID,可用于停止它:

clearInterval(intervalId);

演示代码段



document.body.innerHTML += "Start<br/>";

setInterval(function() {
  document.body.innerHTML += "Interval step<br/>";
}, 1000);

document.body.innerHTML += "Look! Code is completed before interval step<br/>";
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果要将代码作为两个单独的线程运行,则必须使用web Workers,因为Javascript是单线程的,并且一次不能运行多个函数。

如果您创建一个功能

function workForever(){
    while(true){
       .. do work
    }
}

您将完全阻止所有代码,不会调用任何事件,也不会执行其他任何JavaScript。大多数浏览器都会抛出一个对话框,报告一个函数需要很长时间才能杀死页面。但是你的代码卡在那个循环中,只能从循环本身退出。

WebWorkers是Javascript环境中多任务处理的良好解决方案,但您仍需要提供一些非执行时间以允许Web工作者进行通信。 while(true)将阻止与工人的所有沟通,实际上使他们无用。

SetIntervalsetTimeoutrequestAnimationFrame也会被屏蔽。遗憾的是,Javascript是单线程的,并且永远无法同时运行两个函数。