10.3 The async Keyword
In this lesson we'll learn about the
async keyword, including where we can use it and what happens when we do.
1.Introduction2 lessons, 07:42
2.Language Fundamentals8 lessons, 1:00:53
3.Data Structures5 lessons, 22:52
4.Controlling Program Execution7 lessons, 37:06
6.Functions8 lessons, 56:07
7.Miscellaneous6 lessons, 52:39
8.Working With the DOM6 lessons, 37:39
9.Web APIs4 lessons, 17:41
11.Conclusion1 lesson, 00:43
10.3 The async Keyword
Hi folks. In this section, we're going to take a look at the ES8 Aysnc function. Before we start looking at code, I'm just gonna make some space in the editor here. I'm going to collapse this function. And I'm just going to comment out the promise chain from the last lesson. An Aysnc function is similar in many ways to a regular function with just a few subtle differences. To create an Async function, we just depend the async keyword to the start of the function like this It's just like a regular function declaration in that it has an identifier, can accept arguments and can return a value. In this case, it just returns the value that we passed to it. But one of the things that differentiate async functions from regular functions is that they always return a promise. In this case, we aren't specifically returning a promise. And we aren't really doing anything asynchronous inside the function, but it will still return a promise. Which will resolve immediately with the value we explicitly returned from the function. So, let's take a look in the browser now. And we should see in the console that the value we pass to the function is indeed written to the console. If the function does actually do something asynchronous, the promise it returns will be resolved when the promise settles in the normal way for a promise. Or it will reject if an error occurs. So that's one important fact of Async functions. They always return a promise. The other main feature of async functions is that they enable the use of the await operator. We'll look at this in more detail in the next lesson. The only thing to note at this point is that while the await operator does change how async functions work, it's not essential to use. Async functions that don't make use of await are perfectly fine as we've seen here. In terms of support, all current mainstream browsers support it, except for Internet Explorer. There are polyfills that can help if you need to support IE 11, but the one you should use is largely dependent on which frameworks or build tools that you're using. In the last lesson, we saw how to make use of promise chaining. This is a useful feature to know, which addresses an issue with callbacks, where the indentation slowly builds up inside large functions. However, this can still not be optimal in some situations. This is the reason why async functions were created to simplify the structure of multiple asynchronous actions. So in this lesson we looked at Async functions, which we learned are similar to regular functions, except for two main differences. The first difference is that Async functions always return a promise. Even if an async function doesn't explicitly return a promise, it will wrap the return value in a promise and resolve it immediately. The second feature is that it enables the use of the await operator, which we'll learn more about in the next lesson. Thanks for watching.