【问题标题】:How to make a loop do something during a certain time frame in JS如何在JS中的某个时间范围内使循环做某事
【发布时间】:2014-10-26 03:20:03
【问题描述】:

我对 JavaScript 很陌生,所以在回答我的问题时请记住这一点。

我正在尝试制作一些东西,它会在特定时间范围内向用户提问。使用window.prompt() 方法提出问题。如您所见,我在一个名为 askquestions() 的函数中有一个 do while 循环:

var randomNo1;
var randomNo2;
var time;

do {
  randomNo1 = Math.random() * 9;
  randomNo1 = Math.round(randomNo1);
  randomNo2 = Math.random() * 9;
  randomNo2 = Math.round(randomNo2);
  window.prompt("What is " + randomNo1 + " + " + randomNo2 + "?")
} while (time == 0);

我怎样才能在 30 秒后达到time = 1? 提前感谢您的帮助。

【问题讨论】:

  • time 在您的代码中是 undefined
  • 使用the Date object and its methods获取当前时间,加上30秒,然后在while条件下再次针对当前时间进行测试。

标签: javascript function time


【解决方案1】:

你可以使用:

document.setTimeout("str js code/func name call",millisec);
document.setTimeout("time=1;",30000);

延迟执行一些 js 代码

对于您的规范,可能需要以下方法用于其他计时目的:

document.setInterval("js code /func name call",millisec);

间隔执行

另外,强烈建议不要在你的js代码中使用“waiting while”来提供一些定时服务,这可能会导致浏览器将此线程视为无响应线程

【讨论】:

    【解决方案2】:

    您可以使用 1970 年 1 月 1 日以来的毫秒数

    date = new Date();
    mil = date.getTime();
    

    您在代码的开头执行此操作以进行比较,然后在循环中获取更新的代码。如果两者之间的时间大于某个毫秒数,则可以退出循环(while(curDate.getTime()-mil<30000) 为 30 秒)

    【讨论】:

    • 谢谢,我明天试试。
    • user3829943 的反应比我的好。当 while 循环运行时间过长时,Javascript 不喜欢它。
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多