Iterable, iterator, generator by gaurav khurana

31
Iterable, Iterator, Generator By Gaurav Khurana

Transcript of Iterable, iterator, generator by gaurav khurana

Page 1: Iterable, iterator, generator by gaurav khurana

Iterable, Iterator, Generator

By Gaurav Khurana

Page 2: Iterable, iterator, generator by gaurav khurana

Iterator Object• Object is an Iterator object when it allows to access items from a

collection one at a time.• Provide next() method to achieve above.• next() method spits out object of this sort {value : ”something” , done : true/false}.

Page 3: Iterable, iterator, generator by gaurav khurana

Iterable interface• Object must provide default iteration method which returns an

iterator object.• [Symbol.iterator] is such method in javascript.• Its automatically gets called by for of loop.

Page 4: Iterable, iterator, generator by gaurav khurana

Symbol.iterator with other objects

Page 5: Iterable, iterator, generator by gaurav khurana

Some objects doesn’t have iterable Interface

Page 6: Iterable, iterator, generator by gaurav khurana

For of loop execute iterable interface

Log Result

Page 7: Iterable, iterator, generator by gaurav khurana

No iterable for Objects?

Page 8: Iterable, iterator, generator by gaurav khurana

But previous example restricts us to use keys as number lets solve that

Page 9: Iterable, iterator, generator by gaurav khurana

Quick Recap• The Iterable interface require the implementation of a

[Symbol.iterator] method.• The iterator interface require the implementation of next.• Why next()?

• Because next method’s result has a done property set to true means the iterator has been exhausted and the iteration value.

• Most Iterators implement Iterable interface i.e. most of them have [Symbol.iterator] method.

Page 10: Iterable, iterator, generator by gaurav khurana

Let’s simplify the confusing part

Page 11: Iterable, iterator, generator by gaurav khurana

Simplifying further, the need of it

Page 12: Iterable, iterator, generator by gaurav khurana

Array methods returns Iterable iterator

Page 13: Iterable, iterator, generator by gaurav khurana

Generators• Pause Run Pause.• Blocking the asynchronous function calls.• Implementing Iterables.

Page 14: Iterable, iterator, generator by gaurav khurana

Conventional function running

Result

Page 15: Iterable, iterator, generator by gaurav khurana

How generators are different?• Can be pause as many times and resumed later.• Allowing other code to run during these pause periods.• ES6 generator functions are "cooperative" in their concurrency

behavior which basically indicates that a process (in our case, a function) itself chooses when it will allow an interruption, so that it can cooperate with other code.• Use yield keyword to pause itself.

Page 16: Iterable, iterator, generator by gaurav khurana

Syntax please ?

Page 17: Iterable, iterator, generator by gaurav khurana

Generators produce iterables

Page 18: Iterable, iterator, generator by gaurav khurana

Communicating with Generators

Page 19: Iterable, iterator, generator by gaurav khurana

Where can we use them?

Page 20: Iterable, iterator, generator by gaurav khurana

Two way communication with Generator

Page 21: Iterable, iterator, generator by gaurav khurana

Array index using for of loop?

Page 22: Iterable, iterator, generator by gaurav khurana

Generators can help attaining array index using for of

Page 23: Iterable, iterator, generator by gaurav khurana

Error Handling

Page 24: Iterable, iterator, generator by gaurav khurana

Reverse Direction Error Handling

Page 25: Iterable, iterator, generator by gaurav khurana

Reverse error handling continue

Page 26: Iterable, iterator, generator by gaurav khurana

Delegating Generators with yield*

Page 27: Iterable, iterator, generator by gaurav khurana

Delegating and accepting returned value

Page 28: Iterable, iterator, generator by gaurav khurana

Generator can be used for async ajax

Page 29: Iterable, iterator, generator by gaurav khurana

Using generator for async

Page 30: Iterable, iterator, generator by gaurav khurana
Page 31: Iterable, iterator, generator by gaurav khurana