This is required reading for the Code Chrysalis Immersive Bootcamp’s precourse — a series of assignments, projects, assessments, and work that all students must successfully complete remotely before embarking on our full-stack software engineering course.
Let's create a function:
Can you predict the output?
Answer:
What if hello was instead a long-running operation, though? Like a database lookup or HTTP request? Don't worry about how it's implemented, just supposed that if it were, then hello would take a lot longer to complete.
Does this mean that we can't call the last console.log until it's complete? With JavaScript, yes. That's because JavaScript can only do one thing at a time (advanced: single-threaded). This would be, what we call, a synchronous operation.
With a synchronous operation, if something takes a long time, then that function would block the rest of the code from running until the operation is completed.
On a browser, that can mean an unresponsive web page.
On a server, that can mean requests would stop being processed.
Switching gears a little bit…
Unlike the browser, where everything is global, in Node there are only two global things: a module object, and a require() function.
We'll get into module later, for now, let's require() fs:
What is fs? There are two ways to find out:
We see a lot of file related methods, so one could deduce that it stands for "file system".
In your current directory, run the following command:
Then run the following in Node:
What is the result? What happens if you don't include 'utf8'? What is 'utf8'?
In our above example, take note that the console.log does not run until we are done reading the file. Try modifying index.js so that it is a huge chunk of code. Does that change the order?
No.
This is because fs.readFileSync is exacty as its name suggests---it is a synchronous method and therefore, blocking. No matter how large the file, our JavaScript will wait until fs.readFileSync is completely done with reading it.
Let's check this out with regular JavaScript.
Let's create a higher order function now and provide hello to it as a callback.
Can you predict the output?
Answer:
invokeNow(hello) is still exhibiting blocking behavior. We have to wait until all of that is done before we print 5.
Here are a couple of resources. These are not the only resources out in the internet, so please look around and find other resources to supplement as needed.
Code Chrysalis is a Tokyo-based 🗼 coding school providing a full-time and part-time programming courses in English and Japanese. Join us in-person or take our classes remotely. See why we are an industry leader in technical education in Japan 🗾.
We also put on free workshops and events for the community, so follow us for the latest!
👋 Follow us on…
This is the beginning of an introduction into the blocking nature of JavaScript. In the process, you’ll also be doing more exploring of various Node modules, like fs.
年齢・言語・現在のキャリア・技術的なバックグラウンドは日本での就職活動にどう影響しますか?同じ業界内での中途採用もそうですが、未経験業界への転職はより難しく感じるものです。就職先がどこであれ、転職が成功するためにはいくつかの要素があります。
今回は、コードクリサリスの企業向け研修プログラムを導入していただいたNRI DX生産革新本部 本部長 大元様にお話をお伺いしました。 企業向け研修プログラム導入の経緯や受講後の社員様の変化についてお聞きしました。