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