• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:配列に格納したXHRのreadyStateを参照)

配列に格納したXHRのreadyStateを参照した結果、全て同じ値になってしまう問題の回避方法

このQ&Aのポイント
  • JavaScriptで複数のHTMLファイルの更新日時を調べる必要がありますが、readyStateで参照すると全て同じ値になってしまいます。
  • この問題を回避する方法として、リクエストごとにコールバック関数を作成し、その中で個別の値を参照することが必要です。
  • 具体的には、requestオブジェクトを配列ではなく、個別の変数として宣言し、forループ内でそれぞれのリクエストごとに別々のコールバック関数を設定することで解決できます。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.1

function () { if (request[i].readyState == 4) { ここの i のスコープを考えると、forのところの i ですが、この無名関数が呼ばれる時点で i は 2 になっていますので、毎回 request[2].readyState を参照するというのはその通り。 request[i].onreadystatechange = (function(x) {return function () { if (request[x].readyState == 4) { var lmdfd= request[x].getResponseHeader("Last-Modified"); 以下、更新日時の確認処理 } })(i);

furnace
質問者

お礼

ご回答をいただいた上に改善案まで示していただき、ありがとうございます。 処理が行われる順序についてや、 こうした書き方を見ること自体がはじめてで、勉強不足を感じざるをえません。 調べてみたいと思います。

関連するQ&A