Asynchronous programming in JavaScript Why callback

Asynchronous programming in JavaScript Why callback

Asynchronous operation တွေရဲ့ nature က အလုပ်ကိုခေါ်လိုက်တယ် ချက်ချင်းတော့ control return ပြန်လာမယ်။

ဒါပေသိအဖြေက ချက်ချင်းမရဘူးနောက်မှ ရလာမယ်။ ဒီလိုသဘောရှိတယ်။

ဥပမာ အမေလုပ်တဲ့သူက ဟင်းချက်နေတုန်း ငရုတ်သီးမှုန့်လိုတယ်။ ဒါဆိုသားလုပ်သူကိုသွားဝယ်ခိုင်းမယ်။

ဒီအချိန်မှာ သူကဟင်းချက်နေတာကိုရပ်ပြီး သူ့သားငရုတ်သီးမှု့န်ဝယ်တာကိုစောင့်နေမယ် တခြားဘာမှမလုပ်ဘူး။

ဒါဆိုရင် synchronous ဖြစ်တယ်။ ‌သူကတခြားအလုပ်လုပ်လို့ရသားနဲ့ မလုပ်ပဲသူ့သားကိုစောင့်နေတဲ့အတွက် အချိန်အလဟဿဖြစ်မယ်။

ဒါက synchronous ရဲ့ problem။ ဒါကြောင့်မို့ Asynchronousကိုသုံးတာ။

Asynchronous ကိုသုံးလိုက်တော့ ခုနကဈေးသွားဝယ်ခိုင်းလိုက်တဲ့ သားကိုသူမစောင့်တော့ပဲ တခြားအလုပ်လုပ်မယ်။

အဲ့တော့ သူကတခြားအလုပ်လုပ်လို့ရမယ်။ ပို efficient ဖြစ်မယ်။ အပြိုင်လုပ်လို့ရတဲ့သဘောဖြစ်သွားမယ်။

အဲ့တော့ Asynchronous nature က ခိုင်းလိုက်မယ် ချက်ခြင်း control က တခြားအလုပ်ကိုဆက်လုပ်မယ် ။

ခိုင်းလိုက်တဲ့ task ကနောင်တချိန်မှပြီးမယ် ။ ဒီလို သဘောရှိမယ်။

အောက်က code ကိုကြည့်ရအောင်။

function delayFun()

{

setTimeout(()=>{

console.log(‘Executed after 3 seconds’)

return 200;

},3000);

}

let result = delayFun();

console.log(‘after calling delay fun’);

ခုနက code ကို run လိုက်မယ်ဆိုရင် delayFun ကိုထ run မယ် အဲ့ထဲက setTimeout ကို run မယ်။

setTimeout ထဲမှာရှိတဲ့ code ကကျတော့ web api ထဲမှာ register သွားလုပ်ပြီး ၃ စက္ကန့်ပြည့်မှ run မယ်။

3000 seconds ပြည့်မှ ကွက်တိ run မယ်လို့ကံသေကံမပြောလို့မရဘူး။ Event loop concept ပေါ်မူတည်တယ်။

ဒီမှာအသေးစိတ်ရေးထားတယ်။

အဲ့တော့ console ‘after calling delay fun’ ကအရင်ပေါ်လာမယ်

ပြီးမှ ခုနက web api ထဲမှာ register လုပ်ထားတဲ့ setTimeout က အချိန်ပြည့်လို ့’Executed after 3 seconds’ ကိုထ run မယ်။

အဲ့တော့ အဲ့မှာ return ပြန်လာတဲ 200 က result ထဲရောက်မှာမဟုတ်ဘူး။ ဘာလို့ဆိုတော့ သူ run တာကနောက်ကျမှရောက်လို့။

အဲ့တော့ခုနက code မှာ return value 200 (ဒီအချိန်မှာ ဥပမာအရ 200 ပေါ့ တကယ်က aysnchronous operation ကနေပြီးလို့ပြန်လာတဲ့ data,

ဥပမာ file ဖတ်လို့ပြီးတာ network call ပြီးလို့ပြီးတဲ့ response စတာတွေပြန်သယ်ဖို့ )ကို လိုတယ်ဆိုပါစို့။

ဘာလုပ်လို့ရလဲဆိုရင် callback ဆိုတာကိုသုံးလို့ရတယ်။

Callback ဆိုတာတကယ်တော့ function ပဲဒါပေသိ ချက်ခြင်း run မဲ့ function မဟုတ်ပဲနောင်တချိန်ကျမှ ထ run မဲ့ function မျိုး။

to be call later, ဒါမို့ callback လို့ခေါ်တာ။

function callback(data)

{

console.log(‘Data received by callback ‘,data);

}

function delayFun(cb)

{

setTimeout(()=>{

console.log(‘Executed after 3 seconds’)

cb(200);

},3000);

}

delayFun(callback);

console.log(‘after calling delay fun’);

ဒီလိုရေးလို့ရှိရင်ရသွားမယ်။ ဒါဆို callback ဆိုတဲ့ function ကို delayFun ကို parameter အနေနဲ့ပေးလိုက်တာ။

JS က function ကို first classs အနေနဲ့ပေးထားလို့ function ကို parameter အနေနဲ့ပေးလို့ရတာ။

အဲ့တော့ ခုနက ပေးလိုက်တဲ့ ့callback ကို setTimeout ကအလုပ်ပြီးမှ ထခေါ်မယ်။

ဒါဆို setTimeout ကိစ္စပြီးမှလုပ်ရမဲ့အလုပ်ကို callback ထဲမှာလုပ်လို့ရမယ်။

ဆိုပါစို့ file ဖတ်မယ် file ဖတ်တာက aysnchronous ဆိုရင် file ဖတ်ပြီး ရလာတဲ့ data ကိုလုပ်ဖို့ဆိုခုနက callbackလိုမျိုးပေးလိုက်လို့ရတယ်။

ဒါဆို callback ကဘာအသုံးဝင်လဲဆိုတော့ Asynchronous operation တွေမှာ အလုပ်ပြီးရင်ဘာဆက်လုပ်မလဲ ဆက်လုပ်ချင်တဲ့ computation ကို function အနေနဲ့ပေးလိုက်တဲ့သဘောပဲဖြစ်တယ်။

Sequencing လုပ်သွားတယ်ပေါ့။

Original Post=>(https://www.facebook.com/thet.khine.587/posts/pfbid0w8m1ZuPF53ykW8NrmVY7PJP1znMfngESWaVgCSgMabHSYRqWGUmGWdMB1mSgEwi8l)

Link 1

JS

Leave a comment