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 \ SFUVSOB C ^ GVODUJPOQSPNJTFE"EE B C \ SFUVSO1SPNJTFSFTPMWF B C  ^ QSPNJTFE"EE   UIFO JDPOTPMFMPH   

Slide 10

Slide 10 text

Promise非対応のPromise対応にするには GVODUJPOBEE B C \ JG B]]C \ UISPXOFX&SSPS *OWBMJEQBSBNFUFS  ^ SFUVSOB C ^ 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/