Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ECMAScript 6 In Depth - Part II

ECMAScript 6 In Depth - Part II

A talk I gave to the Santa Barbara JavaScript Meetup, June 23rd, 2015.

Tim Doherty

June 24, 2015
Tweet

More Decks by Tim Doherty

Other Decks in Technology

Transcript

  1. ES6 is the first major language update in over 15

    years New syntax aimed at reducing boilerplate JavaScript now has "classes" (but not really) Native modules for organizing code JavaScript is King of the web
  2. MEANWHILE Spec ratified and published June 17th, 2015 Now the

    official language standard WebAssembly ("wasm")
  3. l e t o b j 1 = { f

    o o : ' 1 ' } ; l e t o b j 2 = { b a r : ' 2 ' } ; O b j e c t . a s s i g n ( o b j 1 , o b j 2 ) ; / / o r l e t o b j 1 = O b j e c t . a s s i g n ( { f o o : ' 1 ' } , o b j 2 ) ; o b j 1 / / { f o o : ' 1 ' , b a r : ' 2 ' }
  4. l e t o b j 1 = O b

    j e c t . c r e a t e ( { b a r : ' b a z ' } ) ; o b j 1 . f o o = ' b a r ' ; l e t o 1 P r o t o = O b j e c t . g e t P r o t o t y p e O f ( o b j 1 ) ; l e t o b j 2 = O b j e c t . a s s i g n ( O b j e c t . c r e a t e ( o 1 P r o t o ) , o b j 1 ) ; o b j 2 . b a r / / ' b a z '
  5. / / E S 5 N a N = =

    = N a N / / f a l s e / / E S 6 O b j e c t . i s ( N a N , N a N ) / / t r u e / / E S 5 0 = = = - 0 / / t r u e / / E S 6 O b j e c t . i s ( 0 , - 0 ) / / f a l s e
  6. l e t o b j = { [ S

    y m b o l ( ' a ' ) ] : ' l o c a l S y m b o l ' , [ S y m b o l . f o r ( ' b ' ) ] : ' g l o b a l S y m b o l ' } ; l e t s = O b j e c t . g e t O w n P r o p e r t y S y m b o l s ( o b j ) ; s . l e n g t h / / 2 s / / [ S y m b o l ( a ) , S y m b o l ( b ) ] s [ 0 ] / / S y m b o l ( a )
  7. l e t o b j 1 = { f

    o o ( ) { r e t u r n ' b a r ' ; } } ; l e t o b j 2 = { b a r : ' 2 ' } O b j e c t . s e t P r o t o t y p e O f ( o b j 2 , o b j 1 ) ; o b j 2 . f o o ( ) / / ' b a r ' * O b j e c t . c r e a t e ( ) i s i s s t i l l p r e f e r r e d
  8. A r r a y . o f ( 1

    ) ; / / [ 1 ] A r r a y . o f ( 1 , 2 , 3 ) ; / / [ 1 , 2 , 3 ] A r r a y . o f ( u n d e f i n e d ) ; / / [ u n d e f i n e d ]
  9. A r r a y . f r o m

    ( ' f o o ' ) ; / / [ ' f ' , ' o ' , ' o ' ] A r r a y . f r o m ( [ 1 , 2 , 3 ] , x = > x * x ) ; / / [ 1 , 4 , 9 ] f u n c t i o n f ( ) { r e t u r n A r r a y . f r o m ( a r g u m e n t s ) ; } f ( 1 , 2 , 3 ) ; / / [ 1 , 2 , 3 ] A r r a y . f r o m ( { l e n g t h : 5 } , ( v , i ) = > i ) ; / / [ 0 , 1 , 2 , 3 , 4 ]
  10. l e t a r r = [ { n

    a m e : ' f o o ' , v a l : ' 1 ' } , { n a m e : ' b a r ' , v a l : ' 2 ' } , { n a m e : ' b a z ' , v a l : ' 3 ' } ] ; / / E S 5 f u n c t i o n f i n d ( a r r , p r o p , v a l u e ) { v a r l e n = = a r r . l e n g t h ; w h i l e ( l e n - - ) { i f ( a r r [ l e n ] [ p r o p ] = = = v a l u e ) { r e t u r n a r r [ l e n ] ; } } } / / E S 6 a r r . f i n d ( e = > e . v a l = = = ' 2 ' ) ;
  11. l e t a r r = [ { n

    a m e : ' f o o ' , v a l : ' 1 ' } , { n a m e : ' b a r ' , v a l : ' 2 ' } , { n a m e : ' b a z ' , v a l : ' 3 ' } ] ; / / E S 5 f u n c t i o n f i n d I n d e x ( a r r , p r o p , v a l u e ) { v a r l e n = = a r r . l e n g t h ; w h i l e ( l e n - - ) { i f ( a r r [ l e n ] [ p r o p ] = = = v a l u e ) { r e t u r n l e n ; } } } / / E S 6 a r r . f i n d I n d e x ( e = > e . v a l = = = ' 2 ' ) ;
  12. [ 1 , 2 , 3 , 4 , 5

    ] . c o p y W i t h i n ( 0 , 3 ) ; / / [ 4 , 5 , 3 , 4 , 5 ] [ 1 , 2 , 3 , 4 , 5 ] . c o p y W i t h i n ( 0 , 3 , 4 ) ; / / [ 4 , 2 , 3 , 4 , 5 ] [ 1 , 2 , 3 , 4 , 5 ] . c o p y W i t h i n ( 0 , - 2 , - 1 ) ; / / [ 4 , 2 , 3 , 4 , 5 ] l e t o b j = { l e n g t h : 5 , 3 : 1 } ; [ ] . c o p y W i t h i n . c a l l ( o b j , 0 , 3 ) ; / / { 0 : 1 , 3 : 1 , l e n g t h : 5 }
  13. [ 1 , 2 , 3 ] . f i

    l l ( 4 ) ; / / [ 4 , 4 , 4 ] [ 1 , 2 , 3 ] . f i l l ( 4 , 1 ) ; / / [ 1 , 4 , 4 ] [ 1 , 2 , 3 ] . f i l l ( 4 , 1 , 2 ) ; / / [ 1 , 4 , 3 ] [ 1 , 2 , 3 ] . f i l l ( 4 , - 3 , - 2 ) ; / / [ 4 , 2 , 3 ] [ ] . f i l l . c a l l ( { l e n g t h : 3 } , 4 ) ; / / { 0 : 4 , 1 : 4 , 2 : 4 , l e n g t h : 3 }
  14. [ . . . [ 1 , 2 , 3

    ] . k e y s ( ) ] ; / / [ 0 , 1 , 2 ] [ . . . [ 1 , 2 , 3 ] . v a l u e s ( ) ] ; / / [ 1 , 2 , 3 ] [ . . . [ 1 , 2 , 3 ] . e n t r i e s ( ) ] ; / / [ [ 0 , 1 ] , [ 1 , 2 ] , [ 2 , 3 ] ]
  15. S t r i n g . r a w

    ( ` H e l l o \ n W o r l d ! ` ) ; / / ' H e l l o \ \ n W o r l d ! '
  16. S t r i n g . f r o

    m C o d e P o i n t ( 1 0 2 , 1 1 1 , 1 1 1 ) ; / / ' f o o '
  17. l e t s t r = ' G o

    o d m o r n i n g D a v e . ' ; / / E S 5 s t r . i n d e x O f ( ' m o r n i n g ' ) ! = = - 1 / / t r u e s t r . i n d e x O f ( ' f o o b a r ' ) ! = = - 1 / / f a l s e / / E S 6 s t r . i n c l u d e s ( ' m o r n i n g ' ) / / t r u e s t r . i n c l u d e s ( ' f o o b a r ' ) / / f a l s e
  18. l e t s t r = ' G o

    o d m o r n i n g D a v e . ' ; / / E S 5 s t r . i n d e x O f ( ' G o o d m o r n i n g ' ) = = = 0 / / t r u e / / E S 6 s t r . s t a r t s W i t h ( ' G o o d m o r n i n g ' ) / / t r u e
  19. l e t s t r = ' G o

    o d m o r n i n g D a v e . ' ; / / E S 5 s t r . s u b s t r ( s t r . l e n g t h - ' D a v e . ' . l e n g t h - 1 ) = = = ' D a v e . ' / / t r u e / / E S 6 s t r . e n d s W i t h ( ' D a v e . ' ) / / t r u e
  20. / / E S 5 ( n e w A

    r r a y ( 4 ) ) . j o i n ( ' a ' ) ; / / ' a a a ' / / E S 6 ' a ' . r e p e a t ( 3 ) ; / / ' a a a '
  21. ' f o o b a r ' . c

    o d e P o i n t A t ( 3 ) ; / / 9 8 ' \ u D 8 0 1 \ u D C 3 7 ' . c o d e P o i n t A t ( 0 ) ; / / 6 6 6 1 5
  22. ' m a ñ a n a ' = =

    = ' m a ñ a n a ' / / f a l s e ? ? ? ' m a \ x F 1 a n a ' U + 0 0 F 1 L A T I N S M A L L L E T T E R N W I T H T I L D E ' m a \ u 0 0 6 E \ u 0 3 0 3 a n a ' U + 0 0 6 E L A T I N S M A L L L E T T E R N + U + 0 3 0 3 C O M B I N I N G T I L D E ' m a ñ a n a ' . n o r m a l i z e ( ' N F C ' ) = = = ' m a ñ a n a ' . n o r m a l i z e ( ' N F C ' ) / / t r u e
  23. / / E S 5 ' \ u D 8

    3 D \ u D C A 9 ' / / U + 1 F 4 A 9 P I L E O F P O O / / E S 6 ' \ u { 1 F 4 A 9 } ' / / U + 1 F 4 A 9 P I L E O F P O O
  24. SYMBOLS Unique, immutable type that can be used for property

    identifiers Symbol object is an implicit wrapper for the primitive type
  25. l e t s y m = S y m

    b o l ( ' f o o ' ) ; / / l o c a l t y p e o f s y m / / ' s y m b o l ' l e t s y m 2 = S y m b o l ( ' f o o ' ) ; s y m = = = s y m 2 / / f a l s e l e t s y m 3 = S y m b o l . f o r ( ' f o o ' ) ; / / g l o b a l
  26. l e t s y m = S y m

    b o l ( ' a ' ) ; l e t o b j = { [ s y m ] : ' f o o ' , b a r : ' b a z ' } ; o b j [ s y m ] / / ' f o o ' O b j e c t . g e t O w n P r o p e r t y N a m e s ( o b j ) / / [ ' b a r ' ] O b j e c t . g e t O w n P r o p e r t y S y m b o l s ( o b j ) / / [ S y m b o l ( a ) ]
  27. l e t T h i n g = (

    f u n c t i o n ( ) { l e t n a m e S y m b o l = S y m b o l ( ) ; r e t u r n c l a s s T h i n g { c o n s t r u c t o r ( n a m e ) { t h i s [ n a m e S y m b o l ] = n a m e ; } g e t n a m e ( ) { r e t u r n t h i s [ n a m e S y m b o l ] ; } } ; } ) ( ) ; l e t i t = n e w T h i n g ( ' f o o ' ) ; i t . n a m e / / ' f o o ' i t . n a m e = ' b a r ' ; / / T y p e E r r o r O b j e c t . g e t O w n P r o p e r t y N a m e s ( i t ) / / [ ]
  28. ITERATORS ES6 introduces an Iterable interface Implemented by built-in collections:

    Array, String, Set, Map Objects can implement Iterable
  29. i n t e r f a c e I

    t e r a b l e { [ S y m b o l . i t e r a t o r ] ( ) : I t e r a t o r ; } i n t e r f a c e I t e r a t o r { n e x t ( ) : I t e r a t o r R e s u l t ; r e t u r n ? ( v a l u e ? : a n y ) : I t e r a t o r R e s u l t ; } i n t e r f a c e I t e r a t o r R e s u l t { v a l u e : a n y ; d o n e : b o o l e a n ; }
  30. l e t a r r = [ 1 ,

    2 , 3 ] ; l e t i t e r = a r r [ S y m b o l . i t e r a t o r ] ( ) ; i t e r . n e x t ( ) ; / / { v a l u e : 1 , d o n e : f a l s e } i t e r . n e x t ( ) ; / / { v a l u e : 2 , d o n e : f a l s e } i t e r . n e x t ( ) ; / / { v a l u e : 3 , d o n e : f a l s e } i t e r . n e x t ( ) ; / / { v a l u e : u n d e f i n e d , d o n e : t r u e }
  31. l e t s t r = ' H e

    l l o ' ; l e t i t e r = s t r [ S y m b o l . i t e r a t o r ] ( ) ; / / s p r e a d o p e r a t o r c o n s u m e s i t e r a b l e s [ . . . i t e r ] ; / / [ ' H ' , ' e ' , ' l ' , ' l ' , ' o ' ] / / a l t e r n a t e l y [ . . . ' H e l l o ' [ S y m b o l . i t e r a t o r ] ( ) ]
  32. l e t a r r = [ 1 ,

    2 , 3 ] ; f o r ( l e t n u m o f a r r ) { c o n s o l e . l o g ( n u m ) ; } / / 1 / / 2 / / 3
  33. l e t s t r = ' H e

    l l o ' ; f o r ( l e t c h r o f s t r ) { c o n s o l e . l o g ( c h r ) ; } / / ' H ' / / ' e ' / / ' l ' / / ' l ' / / ' o '
  34. l e t i t e r a b l

    e = { [ S y m b o l . i t e r a t o r ] ( ) { v a r n = 3 , i = 1 ; r e t u r n { n e x t ( ) { i f ( i < = n ) { r e t u r n { v a l u e : i , d o n e : f a l s e } ; } r e t u r n { v a l u e : u n d e f i n e d , d o n e : t r u e } ; } } } } ; [ . . . i t e r a b l e ] ; / / [ 1 , 2 , 3 ]
  35. f u n c t i o n * i

    t e r a b l e ( ) { f o r ( l e t i = 1 ; i < 4 ; i + + ) { y i e l d i ; } } l e t i t e r = i t e r a b l e ( ) ;
  36. f u n c t i o n * i

    t e r a b l e ( ) { f o r ( l e t i = 1 ; i < 4 ; i + + ) { y i e l d i ; / / i = 1 < - p a u s e } } l e t i t e r = i t e r a b l e ( ) ; i t e r . n e x t ( ) ; / / { v a l u e : 1 , d o n e : f a l s e }
  37. f u n c t i o n * i

    t e r a b l e ( ) { f o r ( l e t i = 1 ; i < 4 ; i + + ) { y i e l d i ; / / i = 2 < - p a u s e } } l e t i t e r = i t e r a b l e ( ) ; i t e r . n e x t ( ) ; / / { v a l u e : 1 , d o n e : f a l s e } i t e r . n e x t ( ) ; / / { v a l u e : 2 , d o n e : f a l s e }
  38. f u n c t i o n * i

    t e r a b l e ( ) { f o r ( l e t i = 1 ; i < 4 ; i + + ) { y i e l d i ; / / i = 3 < - p a u s e } } l e t i t e r = i t e r a b l e ( ) ; i t e r . n e x t ( ) ; / / { v a l u e : 1 , d o n e : f a l s e } i t e r . n e x t ( ) ; / / { v a l u e : 2 , d o n e : f a l s e } i t e r . n e x t ( ) ; / / { v a l u e : 3 , d o n e : f a l s e }
  39. f u n c t i o n * i

    t e r a b l e ( ) { f o r ( l e t i = 1 ; i < 4 ; i + + ) { / / i = 4 y i e l d i ; } } l e t i t e r = i t e r a b l e ( ) ; i t e r . n e x t ( ) ; / / { v a l u e : 1 , d o n e : f a l s e } i t e r . n e x t ( ) ; / / { v a l u e : 2 , d o n e : f a l s e } i t e r . n e x t ( ) ; / / { v a l u e : 3 , d o n e : f a l s e } i t e r . n e x t ( ) ; / / { d o n e : t r u e }
  40. l e t o b j = { * i

    t e r a b l e ( ) { f o r ( l e t i = 1 ; i < 4 ; i + + ) { y i e l d i ; } } } ; [ . . . o b j . i t e r a b l e ( ) ] / / [ 1 , 2 , 3 ]
  41. f u n c t i o n * e

    v e n ( i t e r a b l e ) { f o r ( l e t n o f i t e r a b l e ) { i f ( n % 2 = = = 0 ) { y i e l d n ; } } } f u n c t i o n * t a k e ( n , i t e r a b l e ) { l e t i t e r = i t e r a b l e [ S y m b o l . i t e r a t o r ] ( ) ; w h i l e ( n - - ) { y i e l d i t e r . n e x t ( ) . v a l u e ; } } l e t a r r = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ; [ . . . t a k e ( 3 , e v e n ( a r r ) ) ] ; / / [ 2 , 4 , 6 ]
  42. f u n c t i o n * g

    e n 1 ( ) { y i e l d ' a ' ; y i e l d * g e n 2 ( ) ; y i e l d ' c ' ; } f u n c t i o n * g e n 2 ( ) { y i e l d ' b ' ; y i e l d ' c ' ; } [ . . . g e n 1 ( ) ] / / [ ' a ' , ' b ' , ' c ' , ' d ' ]
  43. f u n c t i o n * o

    b s e r v e r ( ) { c o n s o l e . l o g ( ' R e c e i v e d : ' + y i e l d ) ; c o n s o l e . l o g ( ' R e c e i v e d : ' + y i e l d ) ; c o n s o l e . l o g ( ' R e c e i v e d : ' + y i e l d ) ; } l e t c = o b s e r v e r ( ) ; / / n o t e : n o p a r a m t o ` n e x t ( ) ` h e r e o b s e r v e r . n e x t ( ) ;
  44. f u n c t i o n * o

    b s e r v e r ( ) { c o n s o l e . l o g ( ' R e c e i v e d : ' + 1 ) ; c o n s o l e . l o g ( ' R e c e i v e d : ' + y i e l d ) ; c o n s o l e . l o g ( ' R e c e i v e d : ' + y i e l d ) ; } l e t c = o b s e r v e r ( ) ; / / n o t e : n o p a r a m t o ` n e x t ( ) ` h e r e o b s e r v e r . n e x t ( ) ; o b s e r v e r . n e x t ( 1 ) ; / / R e c e i v e d 1
  45. f u n c t i o n * o

    b s e r v e r ( ) { c o n s o l e . l o g ( ' R e c e i v e d : ' + y i e l d ) ; c o n s o l e . l o g ( ' R e c e i v e d : ' + 2 ) ; c o n s o l e . l o g ( ' R e c e i v e d : ' + y i e l d ) ; } l e t c = o b s e r v e r ( ) ; / / n o t e : n o p a r a m t o ` n e x t ( ) ` h e r e o b s e r v e r . n e x t ( ) ; o b s e r v e r . n e x t ( 1 ) ; / / R e c e i v e d 1 o b s e r v e r . n e x t ( 2 ) ; / / R e c e i v e d 2
  46. f u n c t i o n * o

    b s e r v e r ( ) { c o n s o l e . l o g ( ' R e c e i v e d : ' + y i e l d ) ; c o n s o l e . l o g ( ' R e c e i v e d : ' + y i e l d ) ; c o n s o l e . l o g ( ' R e c e i v e d : ' + 3 ) ; } l e t c = o b s e r v e r ( ) ; / / n o t e : n o p a r a m t o ` n e x t ( ) ` h e r e o b s e r v e r . n e x t ( ) ; o b s e r v e r . n e x t ( 1 ) ; / / R e c e i v e d 1 o b s e r v e r . n e x t ( 2 ) ; / / R e c e i v e d 2 o b s e r v e r . n e x t ( 3 ) ; / / R e c e i v e d 3
  47. f u n c t i o n * f

    o o ( x ) { v a r y = y i e l d ( x + 1 ) ; v a r z = y i e l d ( y + 1 ) ; r e t u r n ( x + y + z ) ; } l e t i t e r = f o o ( 1 ) ;
  48. f u n c t i o n * f

    o o ( x ) { v a r y = y i e l d ( x + 1 ) ; < - p a u s e v a r z = y i e l d ( y + 1 ) ; r e t u r n ( x + y + z ) ; } l e t i t e r = f o o ( 1 ) ; / / n o t e : n o p a r a m t o ` n e x t ( ) ` h e r e i t e r . n e x t ( ) ; / / { v a l u e : 2 , d o n e : f a l s e }
  49. f u n c t i o n * f

    o o ( x ) { v a r y = 2 ( x + 1 ) ; < - r e s u m e v a r z = y i e l d ( y + 1 ) ; < - p a u s e r e t u r n ( x + y + z ) ; } l e t i t e r = f o o ( 1 ) ; / / n o t e : n o p a r a m t o ` n e x t ( ) ` h e r e i t e r . n e x t ( ) ; / / { v a l u e : 2 , d o n e : f a l s e } i t e r . n e x t ( 2 ) ; / / { v a l u e : 3 , d o n e : f a l s e }
  50. f u n c t i o n * f

    o o ( x ) { v a r y = y i e l d ( x + 1 ) ; v a r z = 3 ( y + 1 ) ; < - r e s u m e r e t u r n ( x + y + z ) ; } l e t i t e r = f o o ( 1 ) ; / / n o t e : n o p a r a m t o ` n e x t ( ) ` h e r e i t e r . n e x t ( ) ; / / { v a l u e : 2 , d o n e : f a l s e } i t e r . n e x t ( 2 ) ; / / { v a l u e : 3 , d o n e : f a l s e } i t e r . n e x t ( 3 ) ; / / { v a l u e : 6 , d o n e : t r u e }
  51. f u n c t i o n r e

    q ( u r l ) { d o A j a x ( u r l , f u n c t i o n ( r e s p o n s e ) { i t . n e x t ( r e s p o n s e ) ; } ) ; } f u n c t i o n * a s y n c ( ) { l e t r 1 = y i e l d r e q ( ' / r e q 1 ' ) ; l e t r 2 = y i e l d r e q ( ` / r e q 2 ? i d = $ { r 1 . i d } ` ) ; c o n s o l e . l o g ( ` r 2 : $ { r 2 } ` ) ; } v a r i t = a s y n c ( ) ;
  52. f u n c t i o n r e

    q ( u r l ) { d o A j a x ( u r l , f u n c t i o n ( r e s p o n s e ) { i t . n e x t ( r e s p o n s e ) ; } ) ; } f u n c t i o n * a s y n c ( ) { l e t r 1 = y i e l d r e q ( ' / r e q 1 ' ) ; < - p a u s e l e t r 2 = y i e l d r e q ( ` / r e q 2 ? i d = $ { r 1 . i d } ` ) ; c o n s o l e . l o g ( ` r 2 : $ { r 2 } ` ) ; } v a r i t = a s y n c ( ) ; i t . n e x t ( ) ; / / k i c k i t o f f
  53. f u n c t i o n r e

    q ( u r l ) { d o A j a x ( u r l , f u n c t i o n ( r e s p o n s e ) { i t . n e x t ( r e s p o n s e ) ; < - r e s u m e } ) ; } f u n c t i o n * a s y n c ( ) { l e t r 1 = { i d : 1 2 3 } r e q ( ' / r e q 1 ' ) ; l e t r 2 = y i e l d r e q ( ' / r e q 2 ? i d = 1 2 3 ' ) ; < - p a u s e c o n s o l e . l o g ( ` r 2 : $ { r 2 } ` ) ; } v a r i t = a s y n c ( ) ; i t . n e x t ( ) ; / / k i c k i t o f f
  54. f u n c t i o n r e

    q ( u r l ) { d o A j a x ( u r l , f u n c t i o n ( r e s p o n s e ) { i t . n e x t ( r e s p o n s e ) ; < - r e s u m e } ) ; } f u n c t i o n * a s y n c ( ) { l e t r 1 = y i e l d r e q ( ' / r e q 1 ' ) ; l e t r 2 = { a : 1 } r e q ( ` / r e q 2 ? i d = $ { r 1 . i d } ` ) ; c o n s o l e . l o g ( ' r 2 : { a : 1 } ) ; } v a r i t = a s y n c ( ) ; i t . n e x t ( ) ; / / k i c k i t o f f
  55. f u n c t i o n r e

    q ( u r l ) { d o A j a x ( u r l , ( ) = > { } , ( e r r ) = > { i t . t h r o w ( ' r e q f a i l e d ' ) ; } ) ; } f u n c t i o n * a s y n c ( ) { t r y { l e t r 1 = y i e l d r e q ( ' / r e q 1 ' ) ; } c a t c h ( e ) { c o n s o l e . l o g ( e ) ; } } v a r i t = a s y n c ( ) ;
  56. f u n c t i o n r e

    q ( u r l ) { d o A j a x ( u r l , ( ) = > { } , ( e r r ) = > { i t . t h r o w ( ' r e q f a i l e d ' ) ; } ) ; } f u n c t i o n * a s y n c ( ) { t r y { l e t r 1 = y i e l d r e q ( ' / r e q 1 ' ) ; < - p a u s e } c a t c h ( e ) { c o n s o l e . l o g ( e ) ; } } v a r i t = a s y n c ( ) ; i t . n e x t ( ) ; / / k i c k i t o f f
  57. f u n c t i o n r e

    q ( u r l ) { d o A j a x ( u r l , ( ) = > { } , ( e r r ) = > { i t . t h r o w ( ' r e q f a i l e d ' ) ; < - r e s u m e } ) ; } f u n c t i o n * a s y n c ( ) { t r y { l e t r 1 = y i e l d r e q ( ' / r e q 1 ' ) ; } c a t c h ( e ) { c o n s o l e . l o g ( e ) ; / / E r r o r : r e q f a i l e d } } v a r i t = a s y n c ( ) ; i t . n e x t ( ) ; / / k i c k i t o f f
  58. RESOURCES - Kyle Simpson - Dr. Axel Rauschmeyer - Nicholas

    Zakas ECMAScript® 2015 Language Specification YDKJS - ES6 & Beyond Exploring ES6 Understanding ECMAScript 6 Learn ES6 - Babel Kangax compatibility table ES6 Fiddle