- Overview
- Transcript
10.4 The await Keyword
In this lesson we'll move on to look at the async
keyword's companion, the await
keyword, which can only be used within async functions.
Key terms:
await
1.Introduction2 lessons, 07:42
1.1Introduction02:12
1.2Setup05:30
2.Language Fundamentals8 lessons, 1:00:53
2.1Variables06:33
2.2Data Types11:28
2.3Arithmetic, Assignment, and Comparison Operators10:24
2.4Unary, Logical, Comma, and Spread Operators09:02
2.5Operator Precedence03:50
2.6Reserved Words04:17
2.7Strict Mode04:34
2.8Functions10:45
3.Data Structures5 lessons, 22:52
3.1Arrays04:29
3.2Objects04:30
3.3Sets04:57
3.4Maps04:21
3.5Weak Maps and Weak Sets04:35
4.Controlling Program Execution7 lessons, 37:06
4.1Conditionals07:49
4.2Switch Statements04:41
4.3The For Loop06:39
4.4The `for .. in` Loop05:17
4.5The `for .. of` Loop04:02
4.6Iterators05:03
4.7While Loops03:35
5.Using JavaScript13 lessons, 1:44:36
5.1Working With Strings09:32
5.2Template Literals05:46
5.3Working With Numbers06:57
5.4Working With Arrays12:53
5.5Iterating and Transforming Arrays07:33
5.6Working With the Object Type13:55
5.7Object Literal Extensions06:45
5.8Working With Object Instances06:45
5.9Getters and Setters05:00
5.10Custom Objects11:28
5.11The `Math` API04:54
5.12Working With Dates and Times08:10
5.13The `Array` Constructor04:58
6.Functions8 lessons, 56:07
6.1The `this` Object06:15
6.2Working With Functions10:11
6.3Scope07:37
6.4Arrow Functions06:59
6.5Generator Functions08:13
6.6Closures05:00
6.7Prototypes06:26
6.8Default and Rest Parameters05:26
7.Miscellaneous6 lessons, 52:39
7.1Destructuring Assignments08:09
7.2AJAX08:30
7.3Regular Expressions10:51
7.4More About Regular Expressions08:38
7.5Classes06:48
7.6ES Modules09:43
8.Working With the DOM6 lessons, 37:39
8.1Selecting HTML Elements05:02
8.2Manipulating HTML Elements07:40
8.3DOM Traversal05:25
8.4Adding and Removing Elements04:45
8.5Creating Elements and Other Nodes04:39
8.6DOM Events10:08
9.Web APIs4 lessons, 17:41
9.1The Selector API03:03
9.2Geolocation05:29
9.3Web Storage05:24
9.4Web Workers03:45
10.Asynchronous JavaScript5 lessons, 26:23
10.1Promises09:52
10.2Promise Chaining05:11
10.3The async Keyword03:21
10.4The await Keyword04:04
10.5More About async and await03:55
11.Conclusion1 lesson, 00:43
11.1Conclusion00:43
10.4 The await Keyword
Hi folks. In this lesson we're going to take a look at the ES8 Await operator. The first thing we should know about the await operator is that it can only be used inside async functions. If we try to use it outside of an async function, it will generate a syntax error. The await operator really has only one purpose, and this is to pause the execution of a function, while it waits for an asynchronous action to complete once the action is complete. Execution of the function will then resume and continue until either the function returns or another await operator is encountered. This is really interesting behavior, and if it sounds familiar it's because it's very similar to how generator functions and the yield keyword work. Using the await operator is just like combining promises with generator functions. And that's actually the reason why the await operator was created to simplify combining generator functions with promises. Let's look at an example. In the last lesson, we added an async function called make request. This is the perfect place to use await, so let's update it. Let's have it call the API response and pass it the URL it receives as an argument. We can just add a console locate Mark when we add the await keyword, which will do shortly. So let's see how it behaves before we add the await keyword. We should also make sure we're passing a valid URL when we call this function. And to really appreciate how awaits works, let's just add another console log after we call the async function. Great, now let's check the browser console. We should see the after await log statement first, then the after request log message. And last, we should see the number fact. This is probably as you expected it to be, right? As the program is executed, it calls the maker request function and goes into the maker request function. It then creates the get API response promise logs the first message then returns. At that point it moves on to the second console log. So let's add the await keyword and see what happens. And let's go back to the console. So the await operator changes everything about how the code executes. This time we see that the after request message comes first, then the after await message. Let's walk through how the code executes. This time when the make request function is called, execution moves into the make request function. But as it creates the get API request promise, it encounters the await operator. So after invoking the get API response function, it immediately pauses and execution moves back to the main context. It then logs the first console message which is after request. Then when the get API response promise resolves, execution transfers back into the makeRequest function where it was paused and resumes, logging the second message to the console. You can see that the await keyword has a profound effect on how our code executes. So in this lesson we looked at the await operator, and learned that this is a special operator that we can only use inside async functions. We saw that the await operator causes an async function to pause while it waits for the results of an asynchronous task. In the next lesson, we will look at some additional async and await techniques. Thanks for watching