1

配列内のURLのリストを繰り返し処理しており、URLごとにページ全体をダウンロードしています。

var urlInformations = [];
var count = 0;
urls.forEach(function(url) {
    // download and add to urlInformations
    count++
    if (count == urls.length) {
        // do something after all URLs are processed
    }
});

現在、これを処理する方法は、要素の数を維持し、無名関数でそれをインクリメントし、その数が私が持っているURLの数に達した場合、必要なことを実行することです。ここで競合状態と並行性の問題が発生する可能性がありますよね?これはどのように行う必要がありますか?

4

2 に答える 2

2

いいえ。Javascript はシングルスレッドです。つまり、カウンターをインクリメントし、それを何らかの数値と比較して続行するかどうかを判断すると、基本的にはセマフォを実装したことになります。これを行うと、同時実行の問題は発生しません。

于 2012-10-17T17:24:22.573 に答える
0
(XMLHttpRequest).addEventListener('load', handleload, false);

function handleload(e) {
    //dostuff
}

XMLHttpRequest の load イベントは、読み込みが完了すると発生します。それはあなたが求めているものですか?

于 2012-10-17T17:27:28.200 に答える