ဒီနေ့မှာတော့ Built-in browser object တစ်ခုဖြစ်တဲ့ XMLHttpRequest အကြောင်းလေး sharing လုပ်သွားမှာပါ။ Javascript,Jscript,VBscript နဲ့ တစ်ခြား browser scripting languages တွေတော်တော်များများမှာသုံးလို့ရပါတယ်။ အဓိက ကတော့ Data တွေကို web server တွေဆီကနေ tarnsfer & manipulate လုပ်ဖို့အတွက် webpage’s client side ဘက်ကနေ HTTP request တွေလုပ်တာပါ၊ အကြမ်းဖျင်းအားဖြင့် web client side နဲ့ server side ကြားထဲမှာ data exchange လုပ်ဖို့ communication channel တစ်ခုလုပ်တာလို့လဲပြောလို့ရပါတယ်။ XMLHttpRequest လို့နာမည်ပေးထားပေမဲ့ XML တစ်ခုနဲ့ပဲအလုပ်လုပ်လို့ရတာမဟုတ်ပါဘူး၊ တစ်ခြား Json, HTML, Plain text etc. တွေနဲ့လဲ fine ပါတယ်။ ကျနော်သိသလောက်ကတော့ AJAX နဲ့တွဲသုံးတာ များပါတယ်။

XHR မှာသုံးတယ့် operation mode နှစ်မျိုးရှိပါတယ်၊ synchronous နဲ့ asynchronous ပါ။

Synchronous Communication ရဲ့သဘောတရားကတော့ process နှစ်ခု(Process A & B)က syncly run နေတယ်ဆိုပါစို့၊ process B က process A ပြီးတဲ့အထိစောင့်ပါတယ်။ Synchronous Transmission က efficient & reliable ဖြစ်ရတဲ့အတွက် data amount များတဲ့အချိန်တွေမှာသုံးရတာပိုအဆင်ပြေမှာပါ။

Asynchronous Communication ကတော့ opposite ပါ။ process နှစ်ခု(Process A & B) ရှိမယ်၊ process B က process A ကိုစောင့်စရာမလိုပါဘူး။ တစ်ခုနဲ့တစ်ခု depend လုပ်စရာမလိုဘဲ execute လုပ်လို့ရပါတယ်။ Async ကတော့ မြန်တယ်၊ economical ဖြစ်တယ်၊ Target Destination (2-way communication) ဖြစ်စရာလည်းမလိုပါဘူး။

Real World example အနေနဲ့ sync & async ကိုနှိုင်းယှဉ်ပြရမယ်ဆိုရင် ဥပမာဆိုပါစို့။
လူနှစ်ယောက်ဖုန်းပြောနေတယ်၊ တစ်ယောက်ပြောတဲ့အချိန်မှာ တစ်ယောက်ကစောင့်ပြီးနားထောင်တယ်၊ နားထောင်ပြီး မှပြန်ပြောပါတယ်၊ Sync communication ရဲ့သဘောတရားအတိုင်းပါပဲ။
နောက်တစ်ခုအနေနဲ့ လူတစ်ယောက်က နောက်တစ်ယောက်ဆီကို စာရေးပြီး စာတိုက်ကနေတစ်ဆင့် ပို့လိုက်ပါတယ်။ တစ်ဖက်လူဆီကနေ ပြန်စာကြီးကိုပဲထိုင်စောင့်နေစရာမလိုပါဘူး၊ တစ်ခြားလုပ်စရာရှိတာတွေကိုလုပ်နေလို့ရပါတယ်၊ နောက်ထပ်စာတစ်စောင်တောင်ထပ်ပို့ချင်ပို့လို့ရပါသေးတယ်။ Async ရဲ့ 2 ways process ပေါ် depend လုပ်စရာမလိုတဲ့သဘောတရားပါ။

Sample code (AJAX) လေးနဲ့တွဲကြည့်ချင်တယ်ဆိုရင်တော့ ဒီမှာသွားကြည့်လို့ရပါတယ်။
https://github.com/HlaingTinHtun/frontend_brushup/blob/master/sync%26async.md

နောက်ဆုံးအနေနဲ့ sync & Async communications နှစ်ခုလုံးက data transmission အတွက်လိုအပ်ပါတယ်။ နှစ်ခုလုံးမှာသူ့ဟာနဲ့သူ အားသာချက်တွေရှိပါတယ်။ ကိုယ်သုံးမယ့် request ပေါ်မူတည်ပြီး ခွဲသုံးလို့ရပါတယ်။

see ya