سلام قصد دارم در این جلسه به شما یاد بدم که بدون استفاده از .then و .catch برای کنترل کردن خطاهای برنامه از aync, await, catch و finally استفاده بکنید. 

به نمونه کد زیر نگاه کنید: 

const doAsyncJobs = async () => {
 try {
   const result1 = await job1();
   const result2 = await job2(result1);
   const result3 = await job3(result2);
   return await job4(result3);
 } catch (error) {
   console.error(error);
 } finally {
   await anywayDoThisJob();
 }
}

async: برای تبدیل کردن تابع جاوااسکریپت که بصورت پیش فرض synchronous می باشد به asynchronous از کلمه کلیدی async استفاده می کنیم.

await: منتظر می ماند تا تابع job1 کارش را انجام بدهد و بعد سراغ job2 , job3 می رود به همین ترتیب اجرا می شود تا return job4 انجام شود.

catch: در صورتی که یکی از توابع به خطای غیر منتظره برخورد کند وارد catch می شود 

finally: وقتی که تابع async وظیفه یا task های خودش و انجام داد وارد finally میشه و می توانید یک تابع دیگری و صدا بزنید.

 دودسته خطا داریم خطای برنامه نویس (توسعه دهنده) یا خطای غیر منتظره شامل قطع شدن اینترنت یا پرشدن حافظه و غیره. 

به احتمال زیاد شما با call back ها اشنایی دارید و می دانید که چقدر کد و کثیف می کردند و با امدن async و await میتوان همان کد های کثیف را باز نویسی کرد و به کد تمیز تبدیل شون کرد. 

خب برای ردیابی خطای های غیر منتظره برنامه بهترین راه این هست که از catch استفاده کنید مانند قطعه کد بالا.