回答編集履歴
2
判断は無理でした、路線変更
test
CHANGED
@@ -1,14 +1,22 @@
|
|
1
|
-
ドキュメントを参照して、「コールバックが定義されているか否か」で
|
1
|
+
ドキュメントを参照して、「コールバックが定義されているか否か」である程度は判別できます。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
- 定義されている: 非同期処理
|
5
|
+
- 定義されている: 非同期処理の可能性がある
|
6
6
|
|
7
|
-
- 定義されていない: 同期処理
|
7
|
+
- 定義されていない: 確実に同期処理
|
8
8
|
|
9
9
|
|
10
10
|
|
11
11
|
このように覚えておけば大丈夫です。
|
12
|
+
|
13
|
+
定義されている場合、コールバックの第一引数がエラー(err)であるかで判別できます。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
- 第一引数がerrである: 確実に非同期処理
|
18
|
+
|
19
|
+
- 第一引数がerrではない: ドキュメントを読んで判断しよう
|
12
20
|
|
13
21
|
|
14
22
|
|
@@ -78,15 +86,7 @@
|
|
78
86
|
|
79
87
|
なので理由が無い限り使わない。
|
80
88
|
|
81
|
-
これが
|
89
|
+
これが大原則です。
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
ライブラリの製作者がよほどの間抜けで違いが分からないならともかく、
|
86
|
-
|
87
|
-
有名所のライブラリでそんなコードをドヤ顔で公開したら速攻で叩かれますね。
|
88
|
-
|
89
|
-
そういう訳で有名所のライブラリならばドキュメントを読むだけで見分けられます。
|
90
90
|
|
91
91
|
|
92
92
|
|
@@ -150,7 +150,7 @@
|
|
150
150
|
|
151
151
|
コールバックをくださいとは言っていませんね?
|
152
152
|
|
153
|
-
なのでこれは「同期処理」です。
|
153
|
+
なのでこれは検討するまでもなく「同期処理」です。
|
154
154
|
|
155
155
|
|
156
156
|
|
@@ -159,3 +159,33 @@
|
|
159
159
|
確かにDOMの構成をドラスティックに変更してしまうのは超重いのですが、
|
160
160
|
|
161
161
|
これはしょうがない、払うべきコストなので非同期処理ではなく同期処理なのです。
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
> コールバックを定義されているのに同期処理ってもしかしたらあるんじゃないの?
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
あります。
|
170
|
+
|
171
|
+
公開関数と呼ばれるものがその代表例です。
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
[Array.prototype.map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map)がその象徴です。
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
```JavaScript
|
180
|
+
|
181
|
+
[1, 2, 3].map(function (num) { return num + 2 });
|
182
|
+
|
183
|
+
// [3, 4, 5]
|
184
|
+
|
185
|
+
```
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
配列のビルトインメソッドに集中しているイメージがありますが、
|
190
|
+
|
191
|
+
map, filter, sort, reduce…を始めとするロジックを注入するものは例外としてコールバックを定義されているのに非同期ではありません。
|
1
冒頭を修正
test
CHANGED
@@ -1,10 +1,28 @@
|
|
1
|
-
|
1
|
+
ドキュメントを参照して、「コールバックが定義されているか否か」で決まります。
|
2
2
|
|
3
|
+
|
4
|
+
|
3
|
-
|
5
|
+
- 定義されている: 非同期処理
|
6
|
+
|
7
|
+
- 定義されていない: 同期処理
|
4
8
|
|
5
9
|
|
6
10
|
|
7
11
|
このように覚えておけば大丈夫です。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
JavaScriptの公式リファレンスはECMAScriptですが超絶読みづらいので、
|
16
|
+
|
17
|
+
Firefox作ってる団体が管理している[MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript)で調べると良いでしょう。
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
ライブラリは各種ライブラリが提供している公式のドキュメントやリファレンスを閲覧してください。
|
22
|
+
|
23
|
+
なければソースコードを直接読んでください。
|
24
|
+
|
25
|
+
Qiitaや各種ブログは鵜呑みにしないようにしてください、侍エンジニア○塾のブログなんてもっての他です。
|
8
26
|
|
9
27
|
|
10
28
|
|