【问题标题】:is there a way to set an interval while a `loop` is being processed [duplicate]有没有办法在处理“循环”时设置间隔[重复]
【发布时间】:2021-11-28 01:15:14
【问题描述】:

我只是想知道有没有办法设置interval 或在处理loop 时运行另一个函数。

例如:

let result = document.getElementById('result')
let time = document.getElementById('time')
function start(){
  setInterval(function(){
    time.textContent = parseFloat(time.textContent)+1
  },1000)
  setTimeout(reallystart(),0)
}
function reallystart(){
for(let i =0;i<10000;i++){
  result.innerHTML +=i
}
}
 

<button onclick='start()'>Click</button>
  <div id='result'></div>
  <div id='time'>0</div>
在示例中,interval 将仅在 loop 完成后处理,但有没有办法让 interval 在处理 loop 时运行。

【问题讨论】:

  • 代码阻塞了线程。如果您需要使用多个线程,请考虑查看web workers

标签: javascript html


【解决方案1】:

JavaScript 是单线程的,所以你一次只能执行一个操作。您可以使用 Event loop 在 JavaScript 中实现并发性

您还可以使用与主线程并行运行的Web workers 执行操作,但网络工作者无法访问 UI 元素。它只能使用消息与主线程通信

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    相关资源
    最近更新 更多