We also need to control setInterval since so many async scenarios rely on timers. The pattern we've created so far matches up nicely and our confidence grows that we'll be able to use these functions together.
Instructor: [0:00] Let's show this pattern one more time with setInterval for a repetition sake. setInterval takes a callback and then an amount of time. We'll say one second and then it returns an id, which we can use to clear the interval, so we pass in that id.
[0:18] If we make a function called createInterval() and we'll want the time and a listener, then we can write time, listener and then cut this here, paste it here. Now we can return a function that will call clearInterval.
[0:36] We'll take these pieces out. This is time, we'll copy and paste. Then listener is here, we'll copy and paste that right here. We can use createInterval, we'll pass in one second. We can call this oneSecond. We can say, "Every second, just log out Hello." I'll hit Save, and you'll see Hello start logging out every second.
[1:02] With this in place, we could do createInterval every two seconds. We'll call this twoSeconds. Every two seconds, we'll console.log("2"). Let's replace this Hello with a 1. You'll see a 1 every one second and a 2 every two seconds.
[1:20] We can show off how we can cancel oneSecond by invoking this cancelOneSecond() function before this listener is called. Hit Save here, and you won't see 1, but you will see 2.
[1:35] The pattern in all these functions we created is to find the pieces that we can pull out. createInterval had time, and listener, addListener had a selector, an event type, and a listener. The timeout had time and a listener. Let's refactor that so it's listener, to be consistent. You can use the words callback and listener fairly interchangeably.
[1:55] For consistency, each of these return a way to cancel or tear down the asynchronous thing planned for the future.
Member comments are a way for members to communicate, interact, and ask questions about a lesson.
The instructor or someone from the community might respond to your question Here are a few basic guidelines to commenting on egghead.io
Be on-Topic
Comments are for discussing a lesson. If you're having a general issue with the website functionality, please contact us at support@egghead.io.
Avoid meta-discussion
Code Problems?
Should be accompanied by code! Codesandbox or Stackblitz provide a way to share code and discuss it in context
Details and Context
Vague question? Vague answer. Any details and context you can provide will lure more interesting answers!