回答編集履歴
2
訂正
answer
CHANGED
@@ -26,10 +26,10 @@
|
|
26
26
|
|
27
27
|
複雑な処理の例として、XMLHttpRequest しか実装されていなかった頃のAjaxがあります。
|
28
28
|
この頃は、Promise なども外部ライブラリが必須となるなど非標準でしたので、
|
29
|
-
「読み込み後の処理だけを変えたいような時にコールバックがよく使われていました。
|
29
|
+
「読み込み後の処理だけを変えたい」ような時にコールバックがよく使われていました。
|
30
30
|
|
31
31
|
```javascript
|
32
|
-
var doRequest = (url, callback)
|
32
|
+
var doRequest = function(url, callback) {
|
33
33
|
let xhr = new XMLHttpRequest();
|
34
34
|
xhr.open("GET", url);
|
35
35
|
xhr.onreadystatechange = function() {
|
@@ -39,5 +39,8 @@
|
|
39
39
|
}
|
40
40
|
xhr.send();
|
41
41
|
}
|
42
|
+
// アロー関数を記述していたので、古典的な記述に訂正
|
42
43
|
```
|
43
|
-
この例ですと、(Base64でエンコードされた文字列、JSONなど)テキストベースのデータを読むことができ、callback に渡す関数で解析できるようになります。
|
44
|
+
この例ですと、(Base64でエンコードされた文字列、JSONなど)テキストベースのデータを読むことができ、callback に渡す関数で解析できるようになります。
|
45
|
+
|
46
|
+
※かつては、非同期処理を扱う際、コールバックの知識が必須でした。
|
1
追記
answer
CHANGED
@@ -16,4 +16,28 @@
|
|
16
16
|
1. 関数宣言された状態の **関数オブジェクト** (printWanko)を引数に渡す。
|
17
17
|
2. call の引数 callback は、渡された 関数オブジェクト(printWanko) を**参照**する
|
18
18
|
(printWanko を callbackという別名で実行できるイメージです)。
|
19
|
-
3. **カッコをつけて引数を受け付ける構文** ``callback()`` となってprintWankoが実行される。
|
19
|
+
3. **カッコをつけて引数を受け付ける構文** ``callback()`` となってprintWankoが実行される。
|
20
|
+
|
21
|
+
追記)
|
22
|
+
|
23
|
+
> 関数の中で別の関数を使えるようにするというだけなのでしょうか?
|
24
|
+
|
25
|
+
端的に言えばそうです。
|
26
|
+
|
27
|
+
複雑な処理の例として、XMLHttpRequest しか実装されていなかった頃のAjaxがあります。
|
28
|
+
この頃は、Promise なども外部ライブラリが必須となるなど非標準でしたので、
|
29
|
+
「読み込み後の処理だけを変えたいような時にコールバックがよく使われていました。
|
30
|
+
|
31
|
+
```javascript
|
32
|
+
var doRequest = (url, callback) => {
|
33
|
+
let xhr = new XMLHttpRequest();
|
34
|
+
xhr.open("GET", url);
|
35
|
+
xhr.onreadystatechange = function() {
|
36
|
+
if (xhr.readyState === 4 && xhr.status === 200) {
|
37
|
+
callback( xhr.responseText );
|
38
|
+
}
|
39
|
+
}
|
40
|
+
xhr.send();
|
41
|
+
}
|
42
|
+
```
|
43
|
+
この例ですと、(Base64でエンコードされた文字列、JSONなど)テキストベースのデータを読むことができ、callback に渡す関数で解析できるようになります。
|