1

このタイトルを正しく取得するのは難しいです。

何かを追跡するために Javascript 画像オブジェクトを使用すると、http 要求は非同期で行われます (これはブロッキング呼び出しではありません)。そのため、画像オブジェクトへの参照である変数を再利用すると、リクエストのキャンセルを強制します。私の懸念を説明するコードを次に示します。

var img = new Image();
img.src = URL1;  //hit server with request 1
img = new Image(); //re-use the img variable for the next new Image
img.src = URL2;  //and now request 2. Would this cancel request 1 ?

Image オブジェクトの配列を使用することで、この潜在的な問題を回避することができます (現在も行っています)。次に使用可能なものを取得し、10 でラップします。次のようなものです。

var imgs=[], index=0;
function send(url) {
    imgs[index] = new Image();
    imgs[index++].src = url;
    if(index>=10)index=0; //wraparound
}
send(URL1);
send(URL2);

最初のコード例で img オブジェクトを再利用するとき、実際には元の画像オブジェクトに対して何もしていないことを知っています。単に孤立させているだけです。refcount をゼロに減らし、ガベージ コレクション用に開いています。

(最初の例で) 最初のリクエストがキャンセル/中止されたことに気付く可能性はありますか? それとも、常に完了していて、完了しても誰も興味を示さないのでしょうか?

4

1 に答える 1

0

あなたは正しい方法でやっています。リクエストがキャンセルされたかどうかを確認したい場合は、Firefox に Firebug をインストールしてから、ネット リクエスト タブを開いて観察してください。

于 2012-05-15T08:57:22.623 に答える