当前位置: 首页 > 知识库问答 >
问题:

如何使JavaScript编写结果随时间变化(而不是瞬间)?

卢作人
2023-03-14

我有一个程序,它写了很多如果结果。例如,这:

const a = prompt();
for(let i = 1; i < a; i ++) {
  console.log(i);
}

(不是实际代码)
所以当您键入一个大数字时,控制台中会有大量答案等待输入。所以,当它达到某个点时,内置浏览器编译器(Opera GX)就停止工作。我需要一些方法在计算后立即写出这些数字,希望不会浪费时间。我该怎么做?(让您知道,我的实际代码将结果放在“div”元素中)

共有1个答案

翟俊远
2023-03-14

JavaScript是单线程的。这意味着当循环运行时,事件无法处理,页面也不会响应。您可以使用递归setTimeout。这将把一个长时间运行的代码分解成由事件循环管理的许多小片段。

const a = prompt();
const container = document.getElementById('container');
const f = (() => {
  let i = 0;
  return () => {
    for (let j = 0; j < 1e9; ++j) {} // simulates long calculation 
    ++i;
    console.log(i);
    container.innerText += ' ' + i;
    if (i < a) setTimeout(f, 0);
  };
})();
setTimeout(f, 0);
<div id="container"></div>
 类似资料:
  • 我有一个有两张表的 ,我正在试着建立一张统计表。但是,有些公式需要phpexcel尚未实现的函数,只要在Excel中打开文件时计算出来,我并不介意。 当我尝试保存时,我得到了一个异常: 无效的单元格坐标A 因为范围 尚未实现。因此,我禁用了保存时的预计算。 不会引发异常,但我的两个单元格(codeb2/code>和 )都是空的。当我在相应的单元格中复制粘贴公式时,Excel能够找到正确的值。

  • 嗨,我已经习惯了用jQuery编写代码,现在想学习用普通的Javascript编写代码。我用这个例子来显示和隐藏一些选项卡,使用的jQuery,工作正常,但是在JavaScript中如何用不同的方式来编写呢? 我试着比较它们的写法有多不同,这样我就能更好地理解它。如有任何关于如何完成此操作的帮助/提示,将不胜感激。 null null

  • 用例是为数字合成产生正弦波,因此,我们需要计算sin(d t)的所有值,其中: 幼稚的实现方式是: 但是,问题是当t增加时,精度会降低,因为给“sin”函数提供了大量的数字。 改进的版本如下: 输出:

  • 我正在做一个自上而下的视图游戏,在游戏中敌人向特定的位置移动。被移动的目的地经常会发生剧烈的变化--有时敌人还在向前一个目的地移动的时候…… 我想要实现比直线移动更真实的移动,所以当敌人在目的地之间切换时,应该有一些加速和减速。 转向(方向)不是一个因素。你可能会认为sprites会像气垫船一样移动,在目的地之间以最快的速度进行加速和减速。 最后一个考虑是,敌人不仅有一个“最大速度”值,而且还有一

  • 有时,当源代码变得复杂时,我会发现读下面这样的语句会让人困惑:

  • 我有一个在相当大的django项目上使用Pytest的工作测试套件。问题是我无法实现适当的结果使用覆盖,我想知道这是否可能是因为项目目录结构。 考虑以下目录树示例: 以及覆盖报告的示例输出: 查看html报告,我可以看到许多由测试执行的语句没有被认为是覆盖的,尽管它们应该被覆盖。我认为这个覆盖数据是不完整的,它似乎只考虑了导入、定义和文档字符串作为覆盖。 无法确定覆盖率出现错误的原因,我尝试运行单