javascript - 为什么当我尝试初始化多个组件时,Firefox 和其他浏览器会卡住,但在 Chrome 上却不会?

标签 javascript typescript loops google-chrome firefox

在 Firefox(版本 67.0)上,我有一个网格表来显示数据。我使用 forEach() 从 JSON 数据为网格表创建列和行。大约有 100 行、10 列。在创建行和列迭代期间,浏览器卡住,我无法在网页上执行任何操作。迭代结束后,一切恢复正常。

我尝试在不同的浏览器上执行相同的操作:IE、Edge、Chrome(最新版本)。 IE、Edge(Chrome 除外)均存在卡顿问题。在 Chrome 上的迭代过程中,我可以在网页上执行其他任务,例如单击按钮、将鼠标悬停在列上等。

为什么 Chrome 上没有出现这种情况?是因为 Chrome 使用不同的引擎吗? 我该如何克服这个问题?

function initGridComponents() {
  let records = data.items;
  records.forEach((record) => {
    createColumnsType1(record);
    createColumnsType2(record);
    createColumnsType3(record);
  });
}

我希望它能在卡住的浏览器中正常工作。

最佳答案

您可以utilise the event queue间隔操作,从而使页面在加载时响应更快:

function initGridComponents() {
  let records = data.items;
  records.forEach((record) => {

    setTimeout(createColumnsType1, 0, record);
//             ^^^^^^^^^^^^^^^^^^     ^^^^^^
//               function handle     parameter
    setTimeout(createColumnsType2, 0, record);
    setTimeout(createColumnsType3, 0, record);
  });
}

关于javascript - 为什么当我尝试初始化多个组件时,Firefox 和其他浏览器会卡住,但在 Chrome 上却不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56376373/

相关文章:

reactjs - TS1128 : Declaration or statement expected (end of file)

javascript - 在 Mongoose 中,如何根据相关集合中的值查找记录?

c - C 中的循环挑战 : can it be done another way?

我不能只打印一个循环吗? - C

java - JFreechart 循环遍历极坐标图扇区

javascript - 在 JavaScript 中制作并发 Canvas 动画?

javascript - typescript :属性 'name' 在类型 'FormDataEntryValue' 上不存在

javascript - 如何使图像缩放到 div 的大小 [ReactJS TS]

javascript - Bacon.js 总线的 RxJS 等价物是什么?

javascript - 在 JavaScript (ES6) 中合并数组以形成数组数组