Sync در مقابل Async

اگه اجرای یک برنامه به ترتیب خطی انجام بشه، بهش میگن پردازش synchronous. برای مثال توی کد بلاک زیر یه خط تماما خونده و پردازش میشه و بعدش خط بعدی اجرا میشه:

var fs = require('fs');
var contents = fs.readFileSync('fake.js', 'utf8');
console.log(contents);

این پروسه برای یه درخواست خوب کار میکنه. اما موقع فرستاده شدن چندین درخواست، باید منتظر بمونید تا یه درخواست تموم بشه تا بتونه درخواست بعدی رو هندل کنه و این میتونه خیلی کند اتفاق بیافته. برای جلوگیری از این موضوع، میتونید درخواست رو به صورت asynchronous هندل کنید. اینطوری میتونید هر پروسه ای که مدت زمان طولانی طول میکشه تا کامل بشه رو از execution stack منتقلش کنید به پس زمینه و اجازه بدید بقیه کد ها همزمان اجرا بشن، وقتی که کار توی پس زمینه تکمیل شد، دوباره برای ادامه پردازش به execution stack برش گردونید:

var fs = require('fs');
fs.readFile('DATA', 'utf8', function(err, contents) {
console.log(contents);
});
console.log('after calling readFile');