Slide 1

Slide 1 text

PROMISES IN JAVASCRIPT

Slide 2

Slide 2 text

ABOUT ME Rubyist / JavaScripter Yeoman team member Twitter/Github - @revathskumar http://blog.revathskumar.com

Slide 3

Slide 3 text

WHAT ARE PROMISES? A pattern to work with asyncronous operations much neatly. A function return a object called promise, which is the eventual result of the operation. operated via then method. States : Pending / Fulfilled / Rejected p r o m i s e . t h e n ( o n F u l f i l l e d , o n R e j e c t e d )

Slide 4

Slide 4 text

WHY WE NEED PROMISES? Chaining Attach multiple callbacks Pool operations Easy error handling

Slide 5

Slide 5 text

U s e r . g e t ( 1 , { s u c c e s s : f u n c t i o n ( ) { c o n s o l e . l o g ( ' S u c c e s s ' ) ; } , e r r o r : f u n c t i o n ( ) { c o n s o l e . l o g ( ' E r r o r ' ) ; } } )

Slide 6

Slide 6 text

IN PROMISE U s e r . g e t ( 1 ) . t h e n ( f u n c t i o n ( ) { c o n s o l e . l o g ( ' S u c c e s s ' ) ; } , f u n c t i o n ( ) { c o n s o l e . l o g ( ' E r r o r ' ) ; } ) ;

Slide 7

Slide 7 text

U s e r . g e t ( ' 1 ' , { s u c c e s s : f u n c t i o n ( ) { A c c o u n t s . g e t ( ' 1 ' , { s u c c e s s : f u n c t i o n ( ) { A c c o u n t s . u p d a t e ( { t w i t t e r : @ a d d y o s m a n i } , { s u c c e s s : f u c n t i o n ( ) { c o n s o l e . l o g ( ' S u c c e s s ' ) } , e r r o r : f u n c t i o n ( ) { c o n s o l e . l o g ( ' E r r o r ' ) ; } } ) } , e r r o r : f u c n t i o n ( ) { c o n s o l e . l o g ( ' E r r o r ' ) ; } } ) } , e r r o r : f u n c t i o n ( ) { c o n s o l e . l o g ( ' e r r o r ' ) ; } } ) ;

Slide 8

Slide 8 text

U s e r . g e t ( 1 ) . t h e n ( A c c o u n t s . g e t ) . t h e n ( f u n c t i o n ( ) { r e t u r n A c c o u n t s . u p d a t e ( { t w i t t e r : @ a d d y o s m a n i } ) } ) . t h e n ( f u n c t i o n ( ) { c o n s o l e . l o g ( ' S u c c e s s ' ) ; } ) . t h e n ( u n d e f i n e d , f u n c t i o n ( ) { c o n s o l e . l o g ( ' E r r o r ' ) ; } ) ; v a r U s e r = ( f u n c t i o n ( ) { f u n c t i o n g e t ( u s e r _ i d ) { v a r p r o m i s e = n e w A p l u s ( ) ; $ . g e t ( ' / u s e r s / ' + u s e r _ i d , { s u c c e s s : f u n c t i o n ( d a t a ) { p r o m i s e . f u l f i l l ( d a t a . a c c o u n t _ i d ) ; } , e r r o r : f u n c t i o n ( ) { p r o m i s e . r e j e c t ( ' E r r o r ' ) ; } } ) ; r e t u r n p r o m i s e ; } r e t u r n { g e t : g e t } } )

Slide 9

Slide 9 text

POOLING A p l u s . p o o l ( a s y n c F u n c ( ) , a n o t h e r A s y n c F u n c ( ) ) . t h e n ( a s y n c S u c c e s s , a s y n c E r r o r ) ;

Slide 10

Slide 10 text

USING JQUERY $ . w h e n ( $ . a j a x ( " / p a g e 1 . p h p " ) , $ . a j a x ( " / p a g e 2 . p h p " ) , ) . t h e n ( o n S u c c e s s , o n E r r o r ) ;

Slide 11

Slide 11 text

JQUERY : MULTIPLE CALLBACKS $ . w h e n ( f u n c t i o n ( ) { c o n s o l e . l o g ( ' H e l l o P r o m i s e ' ) ; } ) . t h e n ( f u n c t i o n ( ) { c o n s o l e . l o g ( ' S u c c e s s 1 ' ) ; } , f u n c t i o n ( ) { c o n s o l e . l o g ( ' E r r o r 1 ' ) ; } ) . t h e n ( f u n c t i o n ( ) { c o n s o l e . l o g ( ' S u c c e s s 2 ' ) ; } , f u n c t i o n ( ) { c o n s o l e . l o g ( ' E r r o r 2 ' ) ; } ) ;

Slide 12

Slide 12 text

REFERENCE 1. 2. 3. 4. http://promises-aplus.github.io/promises-spec/ http://wiki.commonjs.org/wiki/Promises/A https://github.com/rhysbrettbowen/Aplus/ http://api.jquery.com/category/deferred-object/