1

javascriptでスピンロックを行うにはどうすればよいですか?

たくさんの画像をロードしようとしていますが、すべてがロードされた後にのみ先に進むことができるので、次のようなスピンロックがあります

for(...)
   image[i].onload = function() { ++imagesloaded; }

while(imagesloaded != totalimages)
{
}

そして、ブラウザがクラッシュします。それを行うより良い方法はありますか?または、行方不明の収量/スリープ機能はありますか?

4

3 に答える 3

3

簡単な答え:スピンロックしないでください。


より長い答え:これを行う方法は次のとおりです。

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)の観点から問題を解決することを検討してください。

于 2011-11-06T22:43:23.860 に答える
-1

チェックにループを使用しないでください。イベントハンドラー関数をチェックインします。(したがって、チェックは画像​​がロードされたときにのみ実行し、継続的かつ可能な限り迅速には実行しません)

于 2011-11-06T22:43:03.237 に答える