Join egghead, unlock knowledge.

Want more egghead? It's 45% off for a limited time only!

This lesson is for members. Join us? Get access to all 3,000+ tutorials + a community with expert developers around the world.

Unlock All Content for 45% Off

Already subscribed? Sign In

Save 45% for a limited time.

Get access to all courses and lessons on egghead today.

Autoplay

    Use JavaScript (ES6) generators to pause function execution

    Max StoiberMax Stoiber

    ES6 generators make it possible to pause and resume function execution at arbitrary points. This video will introduce you to the basics of generators with the yield keyword.

    javascriptJavaScript
    Code

    Code

    Become a Member to view code

    You must be a Member to view code

    Access all courses and lessons, track your progress, gain confidence and expertise.

    Become a Member
    and unlock code for this lesson
    Transcript

    Transcript

    00:00 In JavaScript, functions execute until they've reached a return keyword or the end of the function. If we execute our logger here and run it with Node, you will see that it first logs start, and it then logs end. EA6 generators are different. They can be paused and resumed at arbitrary points within the function.

    00:21 To create a generator, we put an asterisk after the function keyword. If we execute this file again, you will see that nothing happens. Nothing is console.logged out. That is because when we call a generator, it returns an instance of itself but doesn't execute it.

    00:40 To be more exact, we should call our generator create logger, and assign it to a variable called logger. To execute our generator, we call logger.next, which executes until the next block is over. If we run this, you'll see again that we logged start and we logged end.

    00:59 To pause a generator, we use the yield keyword. The yield keyword tells the generator to stop executing at this point. If we run our file again, you will see this logs out start. The generator never reaches the console.log end. To execute the next block as well, we call logger.next again. As you can see, both start and end were logged out.

    01:26 We can have as many of these yield keywords in our generator as we want. If we say console.log second block and third block here, and then call logger.next a bunch of times, if we execute this, you will see that everything executes as you expect.

    Discuss

    Discuss