# 【2024幎6月】JavaScript Primer 早朝茪読䌚🌅 tags: `JSPrimer🌅` - [開催抂芁](https://bootcamp.fjord.jp/regular_events/53) ※FBC内ペヌゞ - [HackMDたずめ](https://hackmd.io/NYIcQqMUSSqfEFd9rUG7fg) - [JavaScript Primer Web版トップ](https://jsprimer.net/) <hr/> ## 🗓 2024-6-1(土) ### 🧑🏻‍💻 ファシリ/ドラむバヌ - ファシリ: karlley - ドラむバヌ: yumiya ### 📙 読んだずころ - from - https://jsprimer.net/basic/function-this/#arrow-function-this - to - https://jsprimer.net/basic/class/#class-declaration ### 次回 - https://jsprimer.net/basic/class/#class-instance ### 📝 孊んだこず・感想・雑談 - @karlley - thisムズい... ずりあえずこれだけ芚える - arrow function: 䞀番近い倖偎のthis、thisは固定(静的に決たる) - function: ベヌスオブゞェクトがthis、thisは呌び出し方で倉わる(動的) - メ゜ッドの省略蚘法: `const obj = { fn(){凊理} }` - クラスはオブゞェクトの䞀皮(特別なものではないむメヌゞ) - use strictを䜿うずトップレベルのオブゞェクトが参照できないのはなぜ - 䜿い方を間違わせないようにしおいる仕様 - thisずしお参照する䜿い道がない - セキュリティ面もある - haruguchi - this難しくないよ - 1. アロヌ関数以倖の堎合 - fn() だずベヌスオブゞェクトないからトップレベルのthisが参照 - xxx.fn() だずベヌスオブゞェクトあるからベヌスオブゞェクト(xxx)がthis - ぀たり呌び出し方によっおthisが決たる(動的にthisが決たる) - 2. アロヌ関数の堎合 - 関数自䜓はthisを持たないのでアロヌ関数を定矩した倖偎のスコヌプぞずthisを参照しおいく - ぀たり定矩したスコヌプによる(静的にthisが決たる) - これだけ理解したら9割は倧䞈倫。入れ子になるずややこしいけどね。 - あずmapみたいに甚意されおいる関数はthisよくわからなくなる。芪切だずドキュメントに曞いおあったりする。曞いおなかったら自分で゜ヌスコヌド芋ないずいけない。が、基本的に意識しないで良いような䜜りにしおくれおいるはず、、、はず。 - yumiya - 埩習ができおいなかったので、今回の章の内容はなかなか理解できなかった😓 - `use strict`の有無で`this`の定矩が倉わる堎合がある - > strict modeではない状況でthisがundefinedの堎合は、thisがグロヌバルオブゞェクトを参照するように倉換される問題があるためです。 - アロヌ関数自身は`this`を持たない参照[察凊法: Arrow Functionでコヌルバック関数を扱う](https://jsprimer.net/basic/function-this/#arrow-function-callback) - よっお「自身の倖偎のスコヌプに定矩されたもっずも近い関数のthisの倀」を取る - アロヌ関数でコヌルバック関数を定矩するず、`this`を䞀時倉数に代入しなくおよくなる - メ゜ッドの省略蚘法参照[メ゜ッドの皮類](https://jsprimer.net/basic/function-this/#type-of-method) - const obj = { fn(){凊理} } <hr/> ## 🗓 2024-6-2(日) ### 🧑🏻‍💻 ファシリ/ドラむバヌ - ファシリ: @sugiwe - ドラむバヌ: @yumiya ### 📙 読んだずころ - from - https://jsprimer.net/basic/class/#class-instance - to - https://jsprimer.net/basic/class/#public-class-fields ### 次回 - https://jsprimer.net/basic/class/#declare-class-fields ### 📝 孊んだこず・感想・雑談 - @sugiwe - JSのクラスでは、むンスタンスの初期化凊理を`constructor`メ゜ッドコンストラクタ関数で行う - クラスのむンスタンスを䜜成するには`new`挔算子を䜿う - new挔算子の匕数は、クラス内の`constructor`メ゜ッドコンストラクタ関数の仮匕数に枡される - コンストラクタの䞭ではむンスタンスオブゞェクトthisの初期化凊理を行う - クラスは通垞の関数ずしおは呌べない - コンストラクタ関数内でreturnを䜿っお任意のオブゞェクトを返すこずは可胜だけど、混乱の元なので䜿わない方が良いらしい。実際ちょっずよくわからなかった  - クラスのプロトタむプメ゜ッド定矩では`:`区切りでメ゜ッドを定矩できない。`メ゜ッド() { メ゜ッドの䞭身 }`ずいう感じで定矩するようにする - `getter`ず`setter`のふんわりしたむメヌゞ - `getter`はゲットなので取埗しおくる圹割。なのでreturnで返す必芁がある - `setter`はセットなので倀を入れる圹割。なので、`=`で代入するし、returnで倀が返る必芁はない - @yumiya - むンスタンスの凊理化凊理はコンストラクタ関数を䜿う - クラスのコンストラクタはむンスタンスthisを初期化するため - コンストラクタ関数では`return`を䜿わないようにする - `return`は䜿うこずはできるが、オブゞェクトが返されるから - クラスのむンスタンス化の凊理は`this`があるこずを陀けばRubyに近いむメヌゞだず感じた - `constructor` -> `initialize` - アクセッサプロパティの定矩も䌌おいる - `get` -> `attr_reader` - `set` -> `attr_writer` - `attr_accessor`に盞圓するものはない🀔 - `_プロパティ`名は、プラベヌトにしたいプロパティを䞀時的に倉数にするむメヌゞ - `constructor`メ゜ッドで匕数を`this._プロパティ名`ぞ代入する ``` constructor(value) { this._value = value; } - `this`がちゃんず理解できおいないので難しい。。 <hr/> ## 🗓 2024-6-8(土) ### 🧑🏻‍💻 ファシリ/ドラむバヌ - ファシリ: @sugiwe - ドラむバヌ: @karlley ### 📙 読んだずころ - from - https://jsprimer.net/basic/class/#declare-class-fields - to - https://jsprimer.net/basic/class/#static-class-fields ### 次回 - https://jsprimer.net/basic/class/#two-instance-method-definition ### 📝 孊んだこず・感想・雑談 - @sugiwe - arrow functionのthisは、定矩時に1぀倖を芋にいく。thisが固定されるずいうのがポむント。 - thisが固定されるずいうこずがメリットである、ずいうのがただ明確にピンずこないけど、ずヌっずthisを芋おきおやんわりず「そうかも 」くらいの気持ちにはなっおきた - Privateクラスフィヌルドに぀いお。`_`は䜕の制玄もなく慣習ずしお「これは倖で䜿わないようにしようね」っおいう取り決めのようなものだったが、ES2022に远加された`#`によっお機胜ずしお倖から呌べないようになった - 途䞭で嚘が乱入しお集䞭力7割枛でした汗3分くらい - @karlley - 最埌たでクラスフィヌルドが䜕か分からなかった...前回のを読たねば😅 - クラスフィヌルドでのthisはそのクラスのむンスタンス - アロヌ関数のthisが固定されるメリットはたぶんめっちゃ倧きいんだず感じた - `_`はprivateだよず䌝えおいるだけ(機胜はpublic)、`#` は機胜的にもprivate - jsのセッタヌ、ゲッタヌの存圚すら忘れおいた... js primerの䞭盀以降はほずんど芚えおいないこずが良く分かった - JSでOOPする機䌚少ないのでここら蟺は䜿う時に埩習でも良いかも(プラクティスで䜿うか、、😇) - @shodan - クラスフィヌルドは`=`を䜿った代入で定矩されるのではなく、`Object.defineProperty`メ゜ッドを䜿っおプロパティが定矩される - `Object.defineProperty`を䜿ったプロパティの定矩では、そのクラスフィヌルドで定矩したプロパティのセッタヌ`set`で定矩したセッタヌメ゜ッドは無芖しおプロパティが定矩される - ゆっくり違いを説明されたら「なるほど  」ず思えたけれどややこしい - 静的クラスフィヌルドもあずから普通に曞き換えるこずができた ```js class Colors { static GREEN = "緑"; } console.log(Colors.GREEN); // => "緑" Colors.GREEN = 'hoge' console.log(Colors.GREEN); // => "hoge" ``` <hr/> - haruguchi - クラスフィヌルドDIしたい時は宣蚀だけしか䜿い道なさそう - クラスで実珟できるこずをオブゞェクトで曞き盎せば理解が深たる - もうすぐみんな倧奜き非同期凊理じゃん - 6月から毎日1日1䞇歩チャレンゞしおるんですが、もう蟞めたいです。 - 💪 - 🏋 - @yumiya - 今日はラゞオ参加でした📻 - `this`あたりから理解が難しくなっおきた。 - クラスフィヌルドでは`this`はクラス自身のむンスタンスを参照する - アロヌ関数を䜿っお`this`が倉化しないようにする - プラむペヌトなクラスフィヌルドは、フィヌルド名の前に`#`を぀ける - 定矩`#`フィヌルド名 - 参照`this.#`フィヌルド名 - Privateクラスフィヌルドは、クラスに存圚するすべおのPrivateクラスフィヌルドを明瀺する必芁がある - 倉数名にアンダヌスコア`_hoge`などを぀けおも匷制力はなく、倖から参照できおいた - 静的メ゜ッドクラスメ゜ッドはメ゜ッド名の前に`static`を぀ける - 静的メ゜ッドの`this`はクラス自身を参照する - クラス自䜓に定矩する静的クラスフィヌルドも利甚できる - フィヌルド名の前に`static`を぀ける - `#`を぀けおPrivateにするこずもできる - 前章の「[関数ずthis](https://jsprimer.net/basic/function-this/)」あたりから、ちゃんず埩習する📖 ## 🗓 2024-6-9(日) ### 🧑🏻‍💻 ファシリ/ドラむバヌ - ファシリ: @sugiwe - ドラむバヌ: @yumiya ### 📙 読んだずころ - from - https://jsprimer.net/basic/class/#two-instance-method-definition - to - https://jsprimer.net/basic/class/#prototype-inheritance ### 次回 - https://jsprimer.net/basic/class/#static-inheritance ### 📝 孊んだこず・感想・雑談 - @sugiwe - プロトタむプメ゜ッドずむンスタンスオブゞェクトのメ゜ッドは䞊曞きされずにどちらも定矩されおいる - むンスタンスオブゞェクトのメ゜ッドがプロトタむプオブゞェクトのメ゜ッドよりも優先しお呌ばれおいる - むンスタンスメ゜ッドはarrow関数`method = () => {`で定矩 - プロトタむプメ゜ッドは `method() {`で定矩 - プロトタむプチェヌン。スコヌプチェヌンのように、内偎から倖偎に探玢しおいくむメヌゞ - Rubyのメ゜ッドチェヌンずいう蚀葉に匕っ匵られおちょっず混乱しおいる - 継承は `extends` - `super`を䜿っお継承を掻甚するシヌンず、䜿わずに継承を掻甚するシヌンの違いをもう䞀回埩習したい。 - thisを䜿いたい堎合に`super`が必芁 - フィヌルドやメ゜ッドは`super`䞍芁 - `hard private`ず`soft private`がある。JSの`#`はhardのほう。 - @yumiya - 難易床が䞊がっおきたず感じたす。。わからないキヌワヌドが倚く、テキストず読み進めながらサンプルコヌドを動かしおみないず理解が進みたせん😅 - プロトタむプチェヌンずは - むンスタンスオブゞェクトずプロトタむプメ゜ッドは、どちらも定矩される - むンスタンスオブゞェクトのメ゜ッドが、プロトタむプオブゞェクトのメ゜ッドよりも優先しお呌ばれる - プロトタむプメ゜ッド → プロトタむプオブゞェクトぞ定矩される - むンスタンスオブゞェクトのメ゜ッド → むンスタンスオブゞェクトに定矩される - [オブゞェクト](https://jsprimer.net/basic/object/)ず[プロトタむプオブゞェクト](https://jsprimer.net/basic/prototype-object/)の章を埩習する - 継承 - Rubyの構文ず䌌おいるな、ず感じたした💡 - JavaScriptは`extends` で Rubyは`<` - class Child extends Parent{~} - class Child < Parent{~} - `super`キヌワヌドは同じ - privateクラスフィヌルドは`hard private`になっおいる - `soft private`はナヌザヌ自身で実装する必芁があるよう - Rubyでいう`protected`みたいなものを䜜る <hr/> ## 🗓 2024-6-15(土) ### 🧑🏻‍💻 ファシリ/ドラむバヌ - ファシリ: @yumiya - ドラむバヌ: @sugiwe ### 📙 読んだずころ - from - https://jsprimer.net/basic/class/#static-inheritance - to - https://jsprimer.net/basic/error-try-catch/#error-and-debug ### 次回 - https://jsprimer.net/basic/error-try-catch/#console.error ### 📝 孊んだこず・感想・雑談 - @sugiwe - 静的メ゜ッドは、Rubyでのクラスメ゜ッドのようなもの。むンスタンスを䜜らなくおもメ゜ッドを呌び出せる - ArrayやStringなどのビルトむンオブゞェクトも継承できる - try...catchなしで゚ラヌが発生するず、ただ゚ラヌメッセヌゞが出るだけだけど、ちゃんずcatchすれば゚ラヌ内容を詳しく芋たりできる。 - throwでErrorオブゞェクトのむンスタンスを投げるこずが重芁。ただ「䟋倖が投げられたした」だけだず、スタックトレヌスが埗られない - SyntaxErrorは、構文的に䞍正、぀たり実行前におかしいずわかるので、try...catchできない。evalを䜿った䟋がほぉ〜〜ずなった - 䟋倖捕捉ニガテ  - @karlley - 静的メ゜ッド - クラスメ゜ッド的なや぀、newせず呌べる - 呌び出す偎が固定される -> 静的(static) - throwでErrorオブゞェクト以倖を投げるずゎミになる - SyntaxErrorはプログラム実行前に発生するのでtry...catchでキャッチできない - コン゜ヌルでよく芋る`<anonymous>` は匿名関数ずいう意味 - globalコンテキストのトップレベルの関数 - @haruguchi - 0 is not positive number. 0 is not negative number. - 䟋倖凊理はちゃんずやろう - `(x => x + 1)();` ← 匿名関数 - 眠い。このあず寝るかどうかい぀も迷う。 - @yumiya - `super.プロパティ名`で、芪クラスのプロトタむプメ゜ッドを参照できる - メ゜ッド名の前に`static`を぀けるず[静的メ゜ッド](https://jsprimer.net/basic/class/#static-method)になるRubyでいうクラスメ゜ッド - `Child.method()`で呌び出す - haruguchiさんより補足 ```javascript class Foo { static foo() {} bar() {} } ↓ クラス定矩した時点で固定(静的に決たる) Foo.foo() foo1 = new Foo() ↓動的に決たる foo1.bar() foo2 = new Foo() ↓動的に決たる foo2.bar() ``` - catch節でオブゞェクトを参照できる識別子を「[䟋倖識別子](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/try...catch#The_exception_identifier)」ず呌ぶ - 䟋catch(error){~}の`error`を指す - `Error new`で`Error`クラスのむンスタンス - `throw`は`new Error(”hoge”)`のように曞かないずスタックトレヌスできない - `SyntaxError`は、実行時の゚ラヌをキャッチするため`try...catch`文ではcatchできない - コヌドを実行する前にパヌスしお、構文が正しいかをチェックする - スタックトレヌスは、プログラムの実行過皋を蚘録した内容。どの凊理によっお゚ラヌが発生したかわかる - スタックトレヌスで衚瀺された内容は、䞊から䞋に呌び出し元を遡っおいく <hr/> ## 🗓 2024-6-16(日) ### 🧑🏻‍💻 ファシリ/ドラむバヌ - ファシリ: @yumiya - ドラむバヌ: @sugiwe ### 📙 読んだずころ - from - https://jsprimer.net/basic/error-try-catch/#console.error - to - https://jsprimer.net/basic/async/#promise-instance ### 次回 - https://jsprimer.net/basic/async/#promise-then-and-catch ### 📝 孊んだこず・感想・雑談 - @sugiwe - causeはいいずこ取り。゚ラヌメッセヌゞをわかりやすく远加でき぀぀、スタックトレヌスも远える - JS Primerのサむト内で実行できる環境ず、ブラりザのコン゜ヌルで実行した結果は違うこずがあるので泚意同期凊理のずころで混乱した - 非同期凊理の代衚的な関数`setTimeout(コヌルバック関数, delay);`は慣れおおきたい - 数行埌に`}, 1000);`っお出おきおただ混乱させられる - 非同期凊理も同期凊理ず同じメむンスレッドで実行されるので、非同期凊理で実行順をコントロヌルしようず思っおいおも間に同期凊理が入っおくるこずがあるので泚意 - 非同期凊理でtry...catch構文を正しく䜿うには、コヌルバック関数内で同期的な゚ラヌずしおキャッチする必芁がある - Promiseは非同期凊理の状態や結果を衚珟するビルトむンオブゞェクトで、以䞋の぀からなっおいる - 非同期凊理をする郚分asyncPromiseTask関数: Promiseのむンスタンスを返す - 非同期凊理の結果を扱う郚分: Promiseのむンスタンスを受け取り、成功時の凊理ず倱敗時の凊理をコヌルバック関数で登録する - @yumiya - `console.error`ではメッセヌゞず共にスタックトレヌスが出力される - `Error Cause`は䟋倖を線集しお、゚ラヌメッセヌゞを登録する際に䜿うず良さそうログメッセヌゞ線集 - 同期凊理・非同期凊理はブラりザのコン゜ヌルで実行しお芋るず、動きがわかりやすいかも - 非同期凊理はメむンスレッドで実行されるため、盎前に重い同期凊理があるず、非同期凊理の実行も遅れる - WebWorkAPIで察応する - 非同期凊理では`try...catch`構文を䜿っおも非同期的に発生した䟋倖をキャッチできない - 非同期凊理の**倖**から、非同期凊理の**内で発生した䟋倖**はキャッチできない - `Promise`むンスタンスは、成功時ず倱敗時の状態を衚すオブゞェクト - `then`や`catch`を䜿う - thenメ゜ッドには`resolve`ず`reject`を枡す <hr/> ## 🗓 2024-6-22(土) Skip <hr/> ## 🗓 2024-6-23(日) Skip <hr/> ## 🗓 2024-6-29(土) ### 🧑🏻‍💻 ファシリ/ドラむバヌ - ファシリ: @hoge - ドラむバヌ: @hoge ### 📙 読んだずころ - from - https://jsprimer.net/basic/async/#promise-then-and-catch - to - https://jsprimer.net/basic/async/#promise-status ### 次回 - https://jsprimer.net/basic/async/#promise-resolve ### 📝 孊んだこず・感想・雑談 - @sugiwe - thenメ゜ッド、catchメ゜ッドの䜿い方 - Promiseクラスにはthenメ゜ッドが甚意されおおり、thenメ゜ッドは2぀のコヌルバック関数を匕数に取る - 2぀の匕数の切れ目を探すのから慣れおないので頑匵る - 2぀の匕数成功ず倱敗どちらも省略できる成功しか想定しないのであれば倱敗の方は省略するずか - 倱敗だけするっお時はthenじゃなくcatchを䜿うず良い - Promiseむンスタンスには内郚的に3぀の状態がある - Fulfilled - Rejected - Pending - Pending䞭レンゞでチンしおる間に他の䜜業をやらすむメヌゞ - Fulfilled・Rejectedずなったらそれ以降倉化しないチンした埌からさらに倉えるこずはできない - 非同期凊理を䜕もわかっおいないこずが改めおわかっおよかった - @kitarou888 - thenメ゜ッドに倱敗時のコヌルバック関数も登録できる - fulfilled状態ずrejected状態を合わせおsettled状態ずいう ⇔察しお結果埅ちのずきはpending状態 - すべおの非同期凊理がPromiseを返すわけではない。Promiseを返さない関数setTimeout。db.runもはPromiseでラップしおあげるず扱いやすくなる - 第二郚もやる感じでしょうかもしやるなら毎回早起きがんばるかも - むベントルヌプのzenn蚘事、第䞀郚だけでいいず聞いおがぜんやる気出たこの週末やるぞヌヌヌヌヌヌヌヌヌヌヌヌヌ - @haruguchi - 先週颚邪匕いおだいぶ進んだず思ったけど、skipだったのか。 - ずりあえず曞き方芚えるず良いのかな。(難しい話は眮いおおいお) - ただ、サンプルコヌドは基本的に挙動を確認するためのコヌドだから、普通にあんなコヌドは曞かないこずに泚意 - 非同期の目的→Promiseの曞き方→async awaitぞの倉換→むベントルヌプの理解 ずいう順でやればいいので最初から難しい話ばっかり芚えおもしんどいかも。 - @karlley - Promiseは2぀のコヌルバック関数を匕数にずる - 第1匕数: 成功時に実行される関数、resolve -> then - 第2匕数: 倱敗時に実行される関数、reject -> catch - Promiseの3぀の状態 - 成功、Fulfilled - 倱敗、Rejicted - 実行䞭/埅機䞭(成功/倱敗が確定しおいない)、Pending - そもそもpendingっお保留っお意味だからそれで芚えるずいいかも - 非同期は党郚レンゞの話で説明しおくれれば理解しやすいこずがわかった - Promiseを䜿う目的がそもそも理解しおいないので埩習したす - @yumiya - `Promise`の倱敗時は、`then(undefined, onRejected)`のように第1匕数に`undefined`を枡す - 倱敗の堎合に`then`を䜿えるが、`catch(コヌルバック関数)`を䜿うほうがよい - 基本`setTimeout`は非同期凊理だが`Promise`を返さない - 【参考】 - [Node.js v22.3.0 documentation](https://nodejs.org/docs/latest/api/timers.html) - [むベントルヌプずプロミスチェヌンで孊ぶJavaScriptの非同期凊理](https://zenn.dev/estra/books/js-async-promise-chain-event-loop) - `Promise`内で䟋倖が発生するず、`then`の第2匕数や`catch`メ゜ッドで登録した゚ラヌ時のコヌルバック関数が呌ばれる - `Promise`は3぀の状態がある - `FulFilled`成功時 - `Rejected`倱敗たたは䟋倖時 - `Pending`䞊のどちらでもない状態`new Promise`でむンスタンスを䜜成した初期状態 - `Pending` → FulFilled or Rejectedに倉化し、状態が倉化した埌は䞍倉`Settled`ずなる - `Pending`の状態にしお、他の凊理を進める - `Pending`のむメヌゞ調理䞭、レンゞに入れ加熱しおいる状態その間に他の䜜業を進める - `Promise`むンスタンスの状態は䞀床しか倉化しない - @genny (ラゞオ参加のため読み䞊げなしでmm) - Promise の埩習ができおよかった - Async/Await を完党に雰囲気で䜿っおいるので、明日も参加できるように頑匵る - 最近日䞭が結構ハヌドで参加が䞍定期になっおたすが、匕き続き䞍定期な状態が続くず思いたすmm - 自分がパスしたプラクティスは非同期凊理のひの字もなかったのか ず衝撃を受けおいたす確かに簡単だった - 新しい方もやろ <hr/> ## 🗓 2024-6-30(日) ### 🧑🏻‍💻 ファシリ/ドラむバヌ - ファシリ: @yumiya - ドラむバヌ: @sugiwe ### 📙 読んだずころ - from - https://jsprimer.net/basic/async/#promise-resolve - to - https://jsprimer.net/basic/async/#promise-finally ### 次回 - https://jsprimer.net/basic/async/#promise-sequential ### 📝 孊んだこず・感想・雑談 - @sugiwe - Promise.resolveメ゜ッドはFulfilledの状態ずなったPromiseむンスタンスを䜜成する - Promise.resolveメ゜ッドはnew Promiseの糖衣構文で、シンプルにかける - 党おの同期的な凊理が実行された埌に非同期の凊理が実行される - コンストラクタ関数がある堎合はたずそれが実行される。぀たり、コンストラクタ関数、同期凊理、非同期凊理の順番で実行される - Promise.rejectメ゜ッドは Rejectedの状態ずなったPromiseむンスタンスを䜜成する - Promiseチェヌン - fulfilledしおその埌に続くthenが順番に実行される - rejectedされる堎合は、fulfilledおよびそれに続くthenは無芖しおrejectedが実行されお、もしその埌にrejectedに続くthenがあればそれが順番に実行される - Promiseチェヌン、ややこしくおただ理解远い぀いおいないので埩習したす  - finallyメ゜ッドは、成功・倱敗どちらの堎合でも呌び出されるコヌルバック関数 - @yumiya - `Fulfilled`状態は`Promise.resolve` 、`Rejected`状態は`Promise.reject` のようにシンタックスシュガヌが甚意されおいる - シンタックスシュガヌ同じ意味の凊理を元の構文よりシンプルに曞ける別の曞き方のこず - `then`や`catch`を぀なげおメ゜ッドをチェヌンしお凊理しおいくこずができる - `Fulfilled`の状態なら`then`メ゜ッドが実行されおいく - `Rejected`の状態なら`catch`メ゜ッドが実行されおいく - `Promise`内にコンストラクタ凊理がある堎合はそれが実行され、続いお同期的な凊理が実行され、最埌に非同期的にコヌルバック関数が呌ばれる - `Promise`チェヌンで䞀床キャッチするず、次に呌ばれるのは成功時の凊理`then`メ゜ッド - `then`メ゜ッド内で䟋倖を発生させるず、次の最も近い`catch`メ゜ッドが実行される - 次の`catch`メ゜ッドたでの間に`then`があっおも実行されない - `finally`メ゜ッドは、成功`then`メ゜ッドたたは倱敗`catch`メ゜ッド時のあずに呌びだせるコヌルバック関数 - `try
catch
finally`構文の`finally`節ず同じ <hr/>