Slide 1

Slide 1 text

いまさら振り返るPromise N.Shimizu ([email protected])

Slide 2

Slide 2 text

Promise: いずれされる処理を表すオブジェクト https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise 1SPNJTF UIFO GVM'JMMFE UIFO SFKFDUFE DBUDI SFKFDUFE 1SPNJTF Pending Fulfill Reject Return Return

Slide 3

Slide 3 text

Promise chain GFUDI IUUQTFYBNQMFDPNFOEQPJOUTPNFBDUJPO UIFO SFTQPOTFSFTQPOTFKTPO FSSOPUJGZ&SSPS FSS UIFO EBUBEBUBMFOHUI EBUB1SPNJTFSFKFDU OPEBUB UIFO EBUBSFOEFS%BUB EBUB FSSOPUJGZ/P%BUB

Slide 4

Slide 4 text

処理を始めるところと、結果を利用するところを分けられる EP4PNFUIJOH QBSBN SFTQPOTF\ JG SFTQPOTFFSS \ SFUVSOIBOEMF&SSPS SFTQPOTFFSS ^ EP" EP# EP$ EP% DPOTVNF SFTQPOTFSFTVMU ^ DPOTUQEP4PNFUJOH QBSBN EP" EP# EP$ EP% QUIFO DPOTVNF DBUDI IBOEMF&SSPS

Slide 5

Slide 5 text

Promise: 条件分岐の一種 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise 1SPNJTF UIFO GVM'JMMFE UIFO SFKFDUFE DBUDI SFKFDUFE 1SPNJTF Pending Fulfill Reject Return Return

Slide 6

Slide 6 text

直列化 UFTU" UIFO UFTU# UIFO TVDDFTT DBUDI GBJM SFEVDF QSP GVOD QSPUIFO GVOD UIFO TVDDFTT DBUDI GBJM 1SPNJTFBMM UIFO TVDDFTT DBUDI GBJM 㛈ᏁҶ੢⼊ҿӶӔҮ UFTU" UFTU# TVDDFTT GBJM F T T F

Slide 7

Slide 7 text

並列化 UFTU" DBUDI UFTU# UIFO TVDDFTT DBUDI GBJM 1SPNJTFSBDF UIFO TVDDFTT DBUDI GBJM 㛈ᏁҶ੢⼊ҿӶӔҮ UFTU" UFTU# TVDDFTT GBJM F T T F

Slide 8

Slide 8 text

エラー処理を本筋と分けて実装できる MFUSFTVMUEP4PNFUIJOH JG SFTVMUOVMM \ SFTVMUEFGBVMU7BMVF ^ DPOTVNF SFTVMU EP4PNFUIJOH DBUDI FSSEFGBVMU7BMVF UIFO DPOTVNF

Slide 9

Slide 9 text

Promise非対応のPromise対応にするには GVODUJPOBEE B C \ SFUVSOBC ^ GVODUJPOQSPNJTFE"EE B C \ SFUVSO1SPNJTFSFTPMWF BC ^ QSPNJTFE"EE UIFO JDPOTPMFMPH

Slide 10

Slide 10 text

Promise非対応のPromise対応にするには GVODUJPOBEE B C \ JG B]]C \ UISPXOFX&SSPS *OWBMJEQBSBNFUFS ^ SFUVSOBC ^ GVODUJPOQSPNJTFE"EE B C \ USZ\SFUVSO1SPNJTFSFTPMWF BEE B C ^ DBUDIFSS\SFUVSO1SPNJTFSFKFDU FSS ^ ^

Slide 11

Slide 11 text

Promise非対応のPromise対応にするには DPOTUGTSFRVJSF GT GVODUJPOSFBE GJMF \ SFUVSOOFX1SPNJTF SFTPMWF SFKFDU \ GTSFBE'JMF GJMF FSS EBUB \ FSS SFTPMWF FSS SFKFDU EBUB ^ ^ ^

Slide 12

Slide 12 text

Promise非対応のPromise対応にするには GVODUJPOBEE0OF OVNCFST \ DPOTUSFTVMU<> GPS DPOTUOVNPGOVNCFST \ SFTVMUQVTI OVN ^ ^ GVODUJPOQSPNJTFE"EE0OF OVNCFST \ SFUVSO1SPNJTFBMM OVNCFSTNBQ J1SPNJTFSFTPMWF J ^

Slide 13

Slide 13 text

Anti-pattern: ネストしたPromise EP" UIFO SFTVMU"\ EP# UIFO SFTVMU#DPOTVNF SFTVMU" SFTTVMU# ^ 1SPNJTFBMM UIFO SFTVMUTDPOTVNF SFTVMUT<> SFTVMU<> http://taoofcode.net/promise-anti-patterns/

Slide 14

Slide 14 text

Anti-pattern: 続かないチェーン GVODUJPOEP4PNFUIJOH \ DPOTUQSPNJTFEP" QSPNJTFUIFO SFTVMUDPOTVNF SFTVMU SFUVSOQSPNJTF ^ GVODUJPOEP4PNFUIJOH \ SFUVSOEP" UIFO SFTVMUDPOTVNF SFTVMU ^ http://taoofcode.net/promise-anti-patterns/