【发布时间】:2020-11-30 16:37:15
【问题描述】:
我正在使用下面提到的代码来调用一个函数(addCard),它将图像添加到网页。浏览器因此而冻结。如果我在 setTimeOut 中调用一个不更新 UI 的简单函数,则浏览器不会冻结。那么,我们不能在 setTimeOut 回调函数中更新 UI。据我所知,浏览器的 javascript 运行时是单线程的。因此,没有单独的 UI 线程。那为什么浏览器会死机?因为回调将在主线程中运行。代码如下:
while(user.Score > dealer.Score){
setTimeout(function(){addCard(dealer);},2000);
}
【问题讨论】:
-
在导致浏览器死机的情况下,您能估计循环执行的次数吗?另外,条件中的变量如何递增?
-
@DelwynPinto 条件中的变量在 addCard 函数中递增,该函数在 setTimeOut 调用中作为回调传递。
标签: javascript settimeout