I recently read a medium post where the author claimed that using async-await is better than using promises. While this might hold good in general cases, I think that generalisation was too broad and doesn’t do justice to either async-await or promises. For somebody who is new to Javascript making sense of these and decide which one to use can be a challenge. In this post I will list down things that I have learnt about these and how I decide when to use what.
I read somewhere that async-await is syntactical sugar for using promises. So before getting to know async-await or deciding on which approach to you use make sure that you have a better understanding of promises. I captured my learnings in the post Understanding promises in Javascript. If you do not have time to go through the full article checkout the thumb rules that I follow.
resolve maps to then and reject maps to catch for all practical purposes..catch and .then methods for all the promises..finallyPromise object whether they are static methods or prototype methods is again a PromisePromise.all the order of the promises are maintained in values variable irrespective of which promise was first resolved.Once you have wrapped your head around promises checkout async await. It helps you to write code that is much more readable. When not used properly it has its downsides. You can read Understanding async-await in Javascript to checkout my learnings. If you do not have time to read the full article checkout my thumb rules.
Here are a list of thumb rules I use to keep my head sane around using asyncand await
aync functions returns a promise.async functions use an implicit Promise to return its result. Even if you don’t return a promise explicitly async function makes sure that your code is passed through a promise.await blocks the code execution within the async function, of which it(await statement) is a part.await statements within a single async function.async await make sure to use try catch for error handling.await within loops and iterators. You might fall into the trap of writing sequentially executing code when it could have been easily done in parallel.await is always for a single promise.await only blocks the code execution within the async function. It only makes sure that next line is executed when the promise resolves. So if an asynchronous activity has already started then await will not have an effect on it.The answer is that we will use both. Following are the thumb rules I use to decide when to use promises and when to use async await
async function returns a promise. The converse is also true. Every function that returns a promise can be considered as async functionawait is used for calling an async function and wait for it to resolve or reject.await blocks the execution of the code within the async function in which it is located.function2 is dependent on output of function1 then I use await.async functions and then run them in parallel.Promise.all(promisesArray)await remember that you are writing blocking code. Over the time we tend to neglect this.async functions with many await asyncFunction() in it, it is better to create smaller async functions. This way we will be aware of not writing too much of blocking code.async functions is that you force yourself to think what are the async functions that can be run in parallel.asyncfunction. By doing this you are making sure that somebody else can use your function asynchronously.Hope this helps you decide easily when to use promises and when to use promises and when to useasync-await
If you liked this article and would like to read similar articles, don’t forget to clap. There is a limit of 50 claps on medium. Do check it out.