如何在 javascript 中实现自旋锁?
我正在尝试加载一堆图像,我只能在加载完所有内容后才能继续前进,所以我有一个像这样的自旋锁
for(...)
image[i].onload = function() { ++imagesloaded; }
while(imagesloaded != totalimages)
{
}
它让我的浏览器崩溃了。有更好的方法吗?或者我缺少 yield/sleep 函数?
最佳答案
简短回答:不要自旋锁。
更长的答案:这是如何做到的:
var imagesLoaded = 0;
var totalImages = 42;
function handleImageLoad()
{
imagesLoaded++;
if (imagesLoaded === totalImages)
{
doSomething();
}
}
for (var i=0; i<totalImages; i++)
{
image[i].onload = handleImageLoad;
}
一般来说,当您想在 JavaScript 中休眠/等待/自旋时,请考虑通过回调(和 setTimeout
/setInterval
)来解决问题。
关于javascript - Javascript 中的自旋锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8030971/