teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

Promiseの説明の流れを修正

2021/11/29 08:20

投稿

miyabi-sun
miyabi-sun

スコア21473

answer CHANGED
@@ -32,13 +32,19 @@
32
32
  });
33
33
  ```
34
34
 
35
+ Node.jsでは「HTTP通信」やハードディスクの読み書き等は遅い処理として非同期処理の先に飛ばして後で処理するような思想で動いています。
35
- Discord.jsはDiscordというシステムに問い合わせを行う以上
36
+ Discord.jsはDiscordというシステムに問い合わせを行いますが
36
- 多く機能Promiseインスタンスを返すと想定されます。
37
+ Discordに問い合わせがまんまHTTP通信というクソ遅い処理なのです。
37
38
 
39
+ 従って多くの機能がPromiseインスタンスを返すと想定されます。
40
+ Promiseは非同期処理をオブジェクト指向プログラミングのテクニックで上手く処理する
41
+ Node.jsが用意している最新の非同期処理の取扱い方法になります。
42
+
38
43
  [Promise](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise)→[async](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction)/[await](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/await)の順番で勉強して、
39
- きちんと使いこなせるようになったほうがよいでしょう。
44
+ きちんと使いこなせるようになるのがよいでしょう。
40
45
 
46
+ ただまぁ、私もPromiseを完璧に理解して使いこなせるようになるまで数週間かかりました。
41
- ただまぁ、上のawaitが絶大な力を持ってて、
47
+ 上のawaitがPromiseを扱うのに絶大な力を持ってて、
42
48
  async関数で有効化出来るんだよくらいの認識でとりあえず開発は続けられると思います。
43
49
  気が向いたら勉強してみてください。
44
50
 
@@ -63,7 +69,10 @@
63
69
  `Returns: Promise <(GuildMember|User|Snowflake)>`
64
70
 
65
71
  という訳でドキュメントが古くて仕様が変わっているというような事が無ければ
66
- 返り値はPromiseってます
72
+ 返り値はPromiseであり、変わることは中々いでしょう
73
+
67
74
  丁寧に使い方もコードで紹介されています……が、
68
- Promiseを使っても非同期処理は非同期処理のままなのでコールバック地獄になります。
75
+ Promiseを使っても非同期処理は非同期処理のままなので
76
+ コールバック地獄と大差のないエラーハンドリングのおまじないだらけになります。
77
+
69
- なのでasync/await構文を使ってラッピング、ハンドリングした方が良いでしょう。
78
+ async/await構文を使ってラッピング、ハンドリングした方が良いでしょう。