回答編集履歴

2

判断は無理でした、路線変更

2019/02/20 02:13

投稿

miyabi-sun
miyabi-sun

スコア21158

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

冒頭を修正

2019/02/20 02:13

投稿

miyabi-sun
miyabi-sun

スコア21158

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