javascript - Javascript 中的自旋锁

标签 javascript loops loader spinlock

如何在 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/

相关文章:

Java 循环内循环

javascript - 获取 javascript 对象中共享同级同级的所有值

compiler-construction - 什么是编译器、链接器、加载器?

Javascript 代码在 while 循环中不起作用

javascript - 有更好的方法来编写这段代码吗? -- 在 NodeJS 中使用 Promises 链接 HTTP 请求 - 使用 Await/Async?

PHP 增量减半

java - Android多个Loader用于http请求

jquery - jQuery 有与 dojo.require 等效的东西吗?

javascript - 从结果数组中获取值 javascript

javascript - 主干模型节省了客户端和服务器之间的更改循环