回答編集履歴

1

追記

2021/09/28 07:03

投稿

itagagaki
itagagaki

スコア8402

test CHANGED
@@ -1,5 +1,27 @@
1
- 一連の処理の流れの中で`req.onload`にコールバック関数セットしていますが、
1
+ `XMLHttpRequest.open()`の第3引数`true`しているので、操作は非同期になります
2
2
 
3
+ 非同期処理のため`req.onload`にコールバック関数をセットしていますが、
4
+
3
- そのコールバックいつ呼ばれるかわからない状態ですよね。
5
+ そのコールバックいつ呼ばれるかわからない状態ですよね。
4
6
 
5
7
  つまり、まだデータがロードされていない(したがって`req.onload`にセットしたコールバック関数が実行されていない)かもしれない時点で、`console.log(result)` を実行していることになります。
8
+
9
+
10
+
11
+ コールバック関数の実行が完了するまで待つか、さもなくば、まずは同期処理にして`XMLHttpRequest.responseText`を参照するといいのではないでしょうか?
12
+
13
+
14
+
15
+ 下記ドキュメントを参照してください。
16
+
17
+
18
+
19
+ [XMLHttpRequest - Web API | MDN](https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest)
20
+
21
+
22
+
23
+ あと、余談になりますが、XMLHttpRequestも使えますが非推奨になっています。
24
+
25
+
26
+
27
+ [まだXMLHttpRequestを使ってるの? fetchのすすめ - Qiita](https://qiita.com/uhyo/items/91649e260165b35fecd7)