প্রমিস কেন?
ধরুন আমাদের সার্ভারে কিছু ডেটা আছে। প্রথমে আমাদের ডেটা থেকে নাম Retrive করতে হবে তার পরে গিয়ে আমাদের নামের Againist এ E-mail Retrive করতে হবে । ই মেইল উদ্ধার হওয়ার পরে আমাদের ফোন নাম্বার Retrive করতে হবে । এখানে আমাদের একটা আরেকটার সাথে সম্পর্কিত। এবার বুঝুন একটা কলব্যকের ভিতরে আরেকটা কলব্যক । আরেকটার ভিতরে আরেকটা। তাহলে ভাবুন আপনি যখন কোড ডিবাগ করতে যাবেন তখন কি হবে আপনার। মেডিকেলে যাওয়া ছাড়া কোন উপায় নাই। আর এই অবস্থাকেই বলা হয় (Callback Hell) ঠিক এজন্যই প্রমিস। আমাদের কোডটিকে সহজ করে উপস্থাপন করবে। নিচের কোডটি লক্ষ্য করি।
console.log("First")
let promise1 = new Promise((resolve, reject)=>{
let value = 0
if(value==10){
resolve("value is "+ value +" Success")
}else{
reject('Something Error!!!')
}
})
promise1.then((value)=>{
console.log(value)
}).catch(err=>{
console.log(err)
})
console.log('Third')
সবার শেষে আউটপুট দিচ্ছে। তাহলে এই প্রমিজটাও আগের
কলব্যকের মত করে আউটপুট দিচ্ছে । এখানে সুবিধা কি তা একটু
আলোচনা করি।
- প্রথমেই কোড টা বুঝতে অনেক সহজ লাগছে।
- সার্ভার থেকে ডেটা নেওয়ার পর যদি তা সাকসেস হয়। তারপরেই
- আমাদের Resolve() ফাংশনটি ওই ডেটা ভ্যালু হিসেবে then()
- এর ভিতরে আর্গুমেন্ট আকারে কলব্যক অর্থাৎ আরেকটা
- ফাংশনে পাস করছে । তার পর এটি রিসিভ করে তা আমরা
- ইচ্ছে মত ব্যবহার করব।
- আর যদি সাকসেস না হয় তাহলে Reject() ফাংশনের মাধ্যমে
- এরর সহ catch() ফাংশনের মধ্যে আর্গুমেন্ট আকারে কলব্যাক
- অর্থাৎ আরেকটা ফাংশনে পাস করেছে। এবার আমরা কনসোল
- লগ করে দেখতে পারব আসলে আমাদের সমস্যটা কোথায়।
- প্রমিস তৈরি করার জন্য কোড টিকে আমরা বলছি Producing
- code আর then() catch() ব্যবহার করে ডেটা কে প্রসেস করার
- জন্য যে কোড ব্যবহার করা হয় সেই কোডকে আমরা বলব। Consuming code
একটা ডেটা Retrive Success (যেমন নাম) হলে আমাকে তার জন্য
একটি then() লেখা লাগছে আবার তার Email address Retrive করার
জন্য আমাকে আরেকটি then() লেখা লাগছে যা কোডটিকে আবার
কিছুটা Callback Hell এর মত তৈরি করছে । এজন্য আমরা এবার
Async ও Wait ব্যবহার করব। Async ও Wait শুধু Consuming code
কে ReFomatting করবে।
0 Comments