y G e n ( ) { c o n s o l e . l o g ( ' H i ' ) ; y i e l d ; c o n s o l e . l o g ( ' B y e ' ) ; } v a r o b j G e n = m y G e n ( ) ; o b j G e n . n e x t ( ) ; / / ' H i ' o b j G e n . n e x t ( ) ; / / ' B y e '
y G e n ( ) { t r y { v a r n u m b e r = 3 ; y i e l d ; c o n s o l e . l o g ( n u m b e r . t o U p p e r C a s e ( ) ) ; } c a t c h ( e r r ) { c o n s o l e . e r r o r ( e r r ) ; } } v a r o b j G e n = m y G e n ( ) ; o b j G e n . n e x t ( ) ; o b j G e n . n e x t ( ) ; Online example
n n e r G e n ( ) { y i e l d c o n s o l e . l o g ( 2 ) ; y i e l d c o n s o l e . l o g ( 3 ) ; y i e l d c o n s o l e . l o g ( 4 ) ; } f u n c t i o n * o u t e r G e n ( ) { y i e l d c o n s o l e . l o g ( 1 ) ; y i e l d * i n s i d e G e n ( ) ; / / O r t h e s a m e y i e l d * i n s i d e G e n ( ) ; y i e l d c o n s o l e . l o g ( 5 ) ; } Online example
1 , 2 , 3 ] , m y A r r I t = m y A r r [ S y m b o l . i t e r a t o r ] ( ) ; m y A r r I t . n e x t ( ) ; / / O b j e c t { v a l u e : 1 , d o n e : f a l s e } m y A r r I t . n e x t ( ) ; / / O b j e c t { v a l u e : 2 , d o n e : f a l s e } m y A r r I t . n e x t ( ) ; / / O b j e c t { v a l u e : 3 , d o n e : f a l s e } m y A r r I t . n e x t ( ) ; / / O b j e c t { v a l u e : u n d e f i n e d , d o n e : t r u e }
y G e n ( x ) { v a r s i n g l e = y i e l d x , d o u b l e = y i e l d ( x * 2 ) , t r i p l e = y i e l d ( x * 3 ) ; } v a r o b j G e n = m y G e n ( 4 ) ; c o n s o l e . l o g ( o b j G e n . n e x t ( ) . v a l u e ) ; / / 4 c o n s o l e . l o g ( o b j G e n . n e x t ( ) . v a l u e ) ; / / 8 c o n s o l e . l o g ( o b j G e n . n e x t ( ) . v a l u e ) ; / / 1 2 Online Example
y G e n ( x ) { v a r s i n g l e = y i e l d x , d o u b l e = y i e l d ( x * 2 ) , t r i p l e = x * 3 ; r e t u r n t r i p l e ; } v a r o b j G e n = m y G e n ( 4 ) ; c o n s o l e . l o g ( o b j G e n . n e x t ( ) . v a l u e ) ; / / 4 c o n s o l e . l o g ( o b j G e n . n e x t ( ) . v a l u e ) ; / / 8 c o n s o l e . l o g ( o b j G e n . n e x t ( ) . v a l u e ) ; / / 1 2 Online example
f u n c t i o n * m y G e n ( ) { c o n s o l e . l o g ( ' S t a r t e d … ' ) ; v a r d o u b l e = ( y i e l d ) * 2 , t r i p l e = ( y i e l d ) * 3 ; c o n s o l e . l o g ( d o u b l e ) ; c o n s o l e . l o g ( t r i p l e ) ; } v a r o b j G e n = m y G e n ( ) ; o b j G e n . n e x t ( ) ; / / S t a r t g e n e r a t o r o b j G e n . n e x t ( 5 ) ; / / 1 0 o b j G e n . n e x t ( 3 ) ; / / 9
( ) : f u n c t i o n * m y G e n ( ) { c o n s o l e . l o g ( ' S t a r t e d … ' ) ; y i e l d ; / / I n s e r t s a ` r e t u r n ` a t t h i s p o i n t c o n s o l e . l o g ( ' N e v e r g e t s h e r e ' ) ; } v a r o b j G e n = m y G e n ( ) ; o b j G e n . n e x t ( ) ; c o n s o l e . l o g ( o b j G e n . r e t u r n ( ' … T h i s i s t h e e n d . ' ) . v a l u e ) ; Online example
: f u n c t i o n * m y G e n ( ) { t r y { c o n s o l e . l o g ( ' S t a r t e d … ' ) ; y i e l d ; / / T h r o w s e r r o r a t t h i s p o i n t c o n s o l e . l o g ( ' N e v e r g e t s h e r e ' ) ; } c a t c h ( e r r ) { c o n s o l e . e r r o r ( ` E r r o r : $ { e r r } ` ) ; } } v a r o b j G e n = m y G e n ( ) ; o b j G e n . n e x t ( ) ; o b j G e n . t h r o w ( ' A n e r r o r o c u r r e d ' ) ; Online example
as follow: a s y n c f u n c t i o n ( ) { t r y { l e t r e q = a w a i t r e q u e s t ( h t t p : / / s o m e u r l . c o m / g e t C o n t e n t ) ; / / P r o m i s / / D o s o m e t i n g w i t h ` r e q ` } c a t c h ( e r r ) { c o n s o l e . e r r o r ( e r r ) ; } }
by @jhusain. Iterables and Iterators ES6 Generators in depth Iterators gonna iterate ES6 Generators (serie) YDKJS: Async and Performance Async Programming in ES7