回答編集履歴
1
解説を追加
test
CHANGED
@@ -12,9 +12,7 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
※念のため書いておきますが、コールバック関数の使いみちは私がすぐ思いつかなかっただけで沢山あります!
|
15
|
+
※念のため書いておきますが、コールバック関数の使いみちは私がすぐ思いつかなかっただけで沢山あります!探してみてください。
|
16
|
-
|
17
|
-
探してみてください。
|
18
16
|
|
19
17
|
|
20
18
|
|
@@ -100,11 +98,21 @@
|
|
100
98
|
|
101
99
|
そしてプログラムはコードを上から下に向かって流れるように実行します。
|
102
100
|
|
103
|
-
|
101
|
+
この2〜3秒の間、ただ待ちぼうけるにはパソコンにとっては非常に長い時間となるですね。
|
104
102
|
|
105
103
|
そこで、スレッドやプロセスという単位で区切って「お前は通信を待ち受けろ、俺は残りの処理を行う」という風に役割分担してローカルで出来る他の仕事をしにいく作りになっています。
|
106
104
|
|
105
|
+
|
106
|
+
|
107
|
+
待ちぼうけするPHPは単におバカなようですが、WebサーバであるApacheと連携する際、Apacheは最初の起動時にPHPのプロセスを8個同時に起動しておいて、HTTPアクセスが来る度に開いているPHPプロセスを1個割り当てて対応しているんですね。
|
108
|
+
|
109
|
+
つまり切符の販売窓口みたいな解決策を取っているので、1人のお客様を対応する時は、そのプロセスは待ちぼうけする作りで良いわけですね。
|
110
|
+
|
111
|
+
|
112
|
+
|
107
|
-
|
113
|
+
非同期処理にJavaScriptのようにコールバック関数を利用するという解決法を採用している言語もあります。
|
114
|
+
|
115
|
+
この辺の思想は言語によってまちまちですので違いを調べてみると面白いと思います。
|
108
116
|
|
109
117
|
|
110
118
|
|
@@ -116,8 +124,18 @@
|
|
116
124
|
|
117
125
|
|
118
126
|
|
127
|
+
リスト操作にもコールバック関数を利用するケースがあります。
|
128
|
+
|
119
129
|
JavaScriptでリスト操作用のメソッドの[map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map)や[forEach](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)を活用しつつ、[FizzBuzz](https://ja.wikipedia.org/wiki/Fizz_Buzz)を解いてみます。
|
120
130
|
|
131
|
+
下記のメソッドの違いを確かめながら下記のコードを眺めると面白くなるかもしれません。
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
- map: 地図という意味の他に、工場生産で複数の品をプレス加工で一気に作る時もmapと呼ばれます。プログラミングの世界では配列の全ての要素に関数を適用して、戻り値を元に新しい配列を作り直す動きをします。
|
136
|
+
|
137
|
+
- forEach: 単にeachと書かれる事もあります、mapと同じく関数を適用するところまでは同じですが、戻り値を受け取らず捨てる所が違いです。配列の要素1つずつに処理を適用していくことを明示しています。
|
138
|
+
|
121
139
|
|
122
140
|
|
123
141
|
```JavaScript
|