Before we begin, we would like to mention that if you are a professional programmer, this article will most probably be a repeat for you, But if you think you are just starting out, or even as an experienced programmer, you are looking to rethink this concept, reading this article is not a waste.
In this article, we are not going to talk about the direction or order of code execution in a programming language (that is the way a computer looks at and interprets code, which of course has a different architecture in different programming languages), But what we mean here is something else, and that is our mental path in writing code, "the way we look at code"! at first, these sentences may be a little vague or even clear, but let us explain further; Consider the following example:
A car designer receives an order from a company to design a vehicle specifically for a crowded city. Probably the first thing that comes to the designer's mind is to visualize the crowded city space and the image of a small and light car (possibly low-consumption) with a good design to reduce traffic. Let's pause here for a moment. has the designer ever thought about technical issues such as "Engine Type" or "Body Material"? No! because at this stage, it is better to just look at the data carefully and think about them very simply. after all the aspects have been considered, the designer will probably start drawing his own designs according to the company's budget and taste and will enter a more technical phase. Probably after a lot of trial and error in the design and arguing with the company, the final design will be approved and the car will be ready to use.
Why did we use this example at all? Let's go back to the beginning of the example. If you were asked to design this car, wouldn't you have started "Designing the Car" directly in the first place? (I.e. the opposite of the above steps). This means that our minds may confuse and don't distinguish the order of the stages of "Production of something", with the order of the stages of "Thinking" about the Production of that thing! Programming is very similar to this example! Just because a code is written/read from left to right (in most cases) does not mean that you should think the same way! Take a look at the image below:
In this part of the code, the whole storing process is assigned to a variable called "result" (so that it can be used with the same name and its result can be used and processed as needed).
In this part of the code, the program is commanded to wait for the storing process (and not go to the next line until the result of the storing operation is known).
and In this part of the code, the program is commanded to save the "name"!
Now let's look at it differently and as we said at the beginning of the article, see how it is better for us as a programmers to "look at the code", that is like the same car designer, in order to achieve our desired goal. So let's forget the left-to-right order and look at the image below:
Now think again with new fresh look. if our goal is to "save a name in the database", what is the first code that comes to mind?! Yes ... the following code:
What was the explanation of this part of the code?
With this part of code, the program is commanded to save the "name"!
So far, we have met our first need. the next step, like the car designer, is for us to see what our next need is. We want to "make sure that our data is stored in the database" and this is exactly where we write the await code on the left instead of the left-to-right view. (Note that this code only makes sense for this example, and based on your programming language and work environment, you should make your own interpretation of this example).
As we mentioned above:
With this part of code, the program is commanded to wait for the storing process (and not go to the next line until the result of the storing operation is determined).
And now we decide in our minds to "save this process somewhere", so we can use it in the next lines. what should we do? Yes, the answer appears! Now on the left side of the code, we add const result to save it under the name "result":
const result = await name.save()
Before wrapping up, I should clarify that the approach described above is not the only path, it is just an example. There is no doubt that you can rearrange the steps of thinking based on your mind and your program environment.
I hope instead of simplifying this, I didn't make it more difficult to understand, but considering all we have discussed, I would reach the following conclusion:
Don't think about the Order or Direction of code execution first when you are writing code. instead, write down what is on your mind, without thinking about the final complicated rules, and then, each code will find its place!
My name is "Hooman Talakian" and you can follow me on LinkedIn if you liked this article.