我希望代码每秒钟只能算一个。但是,我也希望能够在其旁边运行其他代码。
示例:
while(true){
Number + 1 + OtherNumber = Number
}
也可以同时运行:
function onButtonPress() {
OtherNumber++
}
注意:我不想间隔增加otherNumber,而是按一下按钮。
答案 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;
答案 1 :(得分:0)
如果要将代码作为两个单独的线程运行,则必须使用web Workers,因为Javascript是单线程的,并且一次不能运行多个函数。
如果您创建一个功能
function workForever(){
while(true){
.. do work
}
}
您将完全阻止所有代码,不会调用任何事件,也不会执行其他任何JavaScript。大多数浏览器都会抛出一个对话框,报告一个函数需要很长时间才能杀死页面。但是你的代码卡在那个循环中,只能从循环本身退出。
WebWorkers是Javascript环境中多任务处理的良好解决方案,但您仍需要提供一些非执行时间以允许Web工作者进行通信。 while(true)
将阻止与工人的所有沟通,实际上使他们无用。
SetInterval
,setTimeout
,requestAnimationFrame
也会被屏蔽。遗憾的是,Javascript是单线程的,并且永远无法同时运行两个函数。