কম্পিউটার

কীভাবে জাভাস্ক্রিপ্ট প্রতিশ্রুতি ব্যবহার করবেন

অ্যাসিঙ্ক্রোনাস কোড জাভাস্ক্রিপ্টে লেখার জন্য একটি ব্যথা হতে ব্যবহৃত হয়। আপনার কোডে অ্যাসিঙ্ক্রোনাস অপারেশন লিখতে, আপনাকে কলব্যাক ফাংশনের একাধিক স্তরের সাথে মোকাবিলা করতে হবে। আপনি আপনার কোডে যত বেশি ফাংশন চালু করেছেন, এটি পড়া তত কঠিন ছিল।

ES6-তে, প্রতিশ্রুতি উদ্ধারে এসেছিল। প্রতিশ্রুতি হল জাভাস্ক্রিপ্টে দক্ষতার সাথে অ্যাসিঙ্ক্রোনাস কোড লেখার একটি উপায়।

এই নির্দেশিকায়, আমরা প্রতিশ্রুতিগুলি কী এবং সেগুলি কীভাবে কাজ করে সে সম্পর্কে কথা বলতে যাচ্ছি। আপনার কোডে সেগুলি কীভাবে ব্যবহার করতে হয় তা শিখতে আপনাকে সাহায্য করার জন্য আমরা একটি প্রতিশ্রুতির উদাহরণ দিয়ে হেঁটে যাব। চলুন শুরু করা যাক!

একটি প্রতিশ্রুতি কি?

একটি প্রতিশ্রুতি এমন একটি বস্তু যা একটি প্রতিক্রিয়া প্রদান করে যা আপনি ভবিষ্যতে পেতে চান।

JavaScript প্রতিশ্রুতিগুলি সম্পর্কে চিন্তা করার একটি ভাল উপায় হল লোকেরা কীভাবে প্রতিশ্রুতি দেয় তার সাথে তাদের তুলনা করা। আপনি যখন একটি প্রতিশ্রুতি দেন, এটি একটি নিশ্চয়তা যে আপনি ভবিষ্যতের তারিখে কিছু করতে যাচ্ছেন। আপনি এখন সেই জিনিসটি করতে যাচ্ছেন না; আপনি পরে কিছু সময়ে এটা করবেন।

তিনটি রাজ্যের একটিতে একটি প্রতিশ্রুতি থাকতে পারে:

  • মুলতুবি:একটি প্রতিশ্রুতি এখনও সম্পূর্ণ হয়নি৷
  • প্রত্যাখ্যাত:একটি প্রতিশ্রুতি একটি মান ফেরত দিতে ব্যর্থ হয়েছে৷
  • পূরণ:একটি প্রতিশ্রুতি সম্পন্ন হয়েছে।

এটি বাস্তব জীবনের প্রতিশ্রুতির অনুরূপ। আপনার কাছে একটি মুলতুবি প্রতিশ্রুতি থাকতে পারে যা আপনি বলেছেন যে আপনি ভবিষ্যতে বাস্তবায়ন করতে যাচ্ছেন। আপনি একটি প্রতিশ্রুতি পূরণ করতে পারেন. আপনি প্রত্যাখ্যান করতে পারেন, বা একটি প্রতিশ্রুতি "ভঙ্গ" করতে পারেন এবং আপনি যা করতে সম্মত হয়েছেন তা অনুসরণ করতে পারবেন না।

আপনি যখন একটি প্রতিশ্রুতি করবেন, এটি মুলতুবি থাকবে। প্রতিশ্রুতি এই রাজ্যে বিদ্যমান থাকবে যতক্ষণ না একটি প্রতিক্রিয়া পাওয়া যায় এবং প্রতিশ্রুতি হয় পূর্ণ বা প্রত্যাখ্যান করা হয়।

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।

কিভাবে একটি জাভাস্ক্রিপ্ট প্রতিশ্রুতি তৈরি করবেন

আমরা একটি প্রতিশ্রুতি তৈরি করে শুরু করতে যাচ্ছি যা ব্যবহারকারীর নাম ফেরত দেয়। এই ফাংশনটি তিন সেকেন্ড পরে আমাদের প্রোগ্রামে ব্যবহারকারীর নাম ফিরিয়ে দেবে। এটি আমাদের দেখতে সাহায্য করবে কিভাবে প্রতিশ্রুতিগুলি অ্যাসিঙ্ক্রোনাস কোড লিখতে ব্যবহৃত হয়।

একটি প্রতিশ্রুতি তৈরি করতে, আমাদের একটি প্রতিশ্রুতি বস্তু তৈরি করতে হবে:

new Promise((resolve, reject) => { 
	// Your code here
});

প্রতিশ্রুতি দুটি যুক্তি গ্রহণ করে:একটি ফাংশন যা প্রতিশ্রুতির সাফল্য পরিচালনা করে এবং একটি ফাংশন যা একটি ব্যর্থ প্রতিশ্রুতি পরিচালনা করে। এর মানে হল যে আমাদের প্রতিশ্রুতি তার ফলাফলের উপর নির্ভর করে বিভিন্ন মান ফিরিয়ে দেবে।

একটি প্রতিশ্রুতিতে একটি "যদি" বিবৃতি থাকা উচিত যা নির্ধারণ করে যে একটি প্রতিশ্রুতি সফলভাবে কার্যকর হয়েছে কিনা। একটি প্রতিশ্রুতি সফলভাবে কার্যকর না হলে, এটি একটি প্রত্যাখ্যান রাষ্ট্র প্রতিশ্রুতি ফেরত দেওয়া উচিত:

new Promise((resolve, reject) => { 
	if (value is true) {
		resolve();
	} else {
		reject();
	}
});

একটি নতুন জাভাস্ক্রিপ্ট ফাইল খুলুন এবং নিম্নলিখিত কোডে অনুলিপি করুন:

let returnName = new Promise((resolve, reject) => {
	let name;
	setTimeout(() => {
		name = "Cinnamon";

		if (name === "Cinnamon") {
			resolve(name);
		} else {
			reject("This promise has failed.");
		}
	}, 3000);
});

এই কোডটি Cinnamon নাম প্রদান করে আমরা প্রতিশ্রুতি কল যখন আমাদের প্রধান প্রোগ্রাম. এই কোডটি চালাতে তিন সেকেন্ড সময় লাগে, বা 3,000 মিলিসেকেন্ড। এর মানে হল যে যখন আমরা আমাদের প্রতিশ্রুতিকে কল করি তখন এটি তিন সেকেন্ডের জন্য মুলতুবি থাকবে। প্রতিশ্রুতি নিষ্পত্তি হওয়ার পরে, একটি মীমাংসিত বা প্রত্যাখ্যান করা প্রতিশ্রুতি আমাদের মূল প্রোগ্রামে ফিরিয়ে দেওয়া হবে।

যদি "নাম" "দারুচিনি" এর সমান হয়, আমাদের প্রতিশ্রুতি সফলভাবে সমাধান করা হয়েছে; অন্যথায়, আমাদের প্রতিশ্রুতি প্রত্যাখ্যান করা হবে। এই উদাহরণে, "নাম" সেট করা হয়েছে "দারুচিনি"। যেহেতু আমরা একটি নাম নির্দিষ্ট করেছি, আমাদের প্রতিশ্রুতি নিজেই সমাধান করে।

তারপর() এবং ক্যাচ() প্রতিশ্রুতি সহ

আমাদের কোড এখনও কার্যকর হয় না. আমাদের প্রতিশ্রুতি বস্তুকে কল করতে হবে:

returnName.then(data => {
	console.log(data);
});

then() কীওয়ার্ড আমাদের প্রতিশ্রুতি থেকে একটি প্রতিক্রিয়া পুনরুদ্ধার করতে দেয়। প্রতিশ্রুতি মীমাংসার পর ডাকা হয়। এই উদাহরণে, আমরা data এর বিষয়বস্তু মুদ্রণ করি , যা আমাদের প্রতিশ্রুতি থেকে কনসোলে ফিরে আসা প্রতিক্রিয়া।

আমাদের কোড ফিরে আসে:দারুচিনি।

then() শুধুমাত্র সফল প্রতিশ্রুতি পরিচালনা করে। আমাদের প্রতিশ্রুতি প্রত্যাখ্যান হলে কি হবে? সেখানেই catch() পদ্ধতি আসে।

আপনি একাধিক then() বলতে পারেন একটি প্রতিশ্রুতি ভিতরে বিবৃতি. একে বলে প্রতিশ্রুতি চেইনিং। চেইনিং কীভাবে কাজ করে তা ব্যাখ্যা করার জন্য একটি উদাহরণ ব্যবহার করা যাক:

returnName.then(data => {
	console.log(data);
}).then(() => {
	console.log("This function is over!");

এই কোডটি ফিরে আসবে:

দারুচিনি

এই ফাংশন শেষ.

তারপর () স্টেটমেন্টগুলিকে একটি প্রতিশ্রুতি কন্সট্রাক্টরের ভিতরে নির্দিষ্ট করা ক্রমে কার্যকর করা হয়।

catch() পদ্ধতি then() এর মত প্রতিশ্রুতির সাথে সংযুক্ত পদ্ধতি আসুন একটি হ্যান্ডলার তৈরি করি যা আমাদের নামের উদাহরণের জন্য একটি প্রত্যাখ্যাত প্রতিশ্রুতি পরিচালনা করে:

returnName.then(data => {
	console.log(data);
}).catch(error => {
	console.log(error);
});

আমরা একটি catch() নিয়ে কাজ করেছি আমাদের then() এর পরে বিবৃতি বিবৃতি লক্ষ্য করুন যে আমরা আমাদের প্রতিশ্রুতি কোডের একেবারে শেষে একটি সেমিকোলন (;) ব্যবহার করি। আপনার then() এর পরে একটি সেমিকোলন নির্দিষ্ট করা উচিত নয় পদ্ধতি যদি আপনি catch() ব্যবহার করেন . এটি জাভাস্ক্রিপ্টকে বলবে যে তারপর() এবং ক্যাচ() আলাদা, এবং তাই আপনার কোডে একটি ত্রুটি ফিরে আসবে।

আমাদের প্রতিশ্রুতি প্রত্যাখ্যান করা হলে, catch() স্টেটমেন্টের বিষয়বস্তু চলবে।

আমরা আমাদের কোড চালানোর সময় কি ঘটতে দেখা যাক:

দারুচিনি

মান Cinnamon ফিরে এসেছে কারণ আমাদের প্রতিশ্রুতি সফলভাবে সমাধান হয়েছে। যদি আমাদের প্রতিশ্রুতিতে "নাম" এর মান "দারুচিনি" না হয় তবে একটি ত্রুটি ফেরত দেওয়া হবে:

Uncaught ( অঙ্গীকারে ) This promise has failed.

আমরা ত্রুটি বার্তা নির্দিষ্ট করেছি:"এই প্রতিশ্রুতি ব্যর্থ হয়েছে।" আমাদের প্রতিশ্রুতির মধ্যে আমাদের প্রত্যাখ্যান() ফাংশনে।

অবশেষে() প্রতিশ্রুতি সহ

প্রতিশ্রুতি সফল বা ব্যর্থ হোক না কেন আপনি যদি প্রতিশ্রুতি কার্যকর হওয়ার পরে কোডের একটি ব্লক কার্যকর করতে চান তবে কী হবে?

সেখানেই finally() বিবৃতি কাজে আসে। finally() একটি প্রতিশ্রুতি পূর্ণ বা প্রত্যাখ্যান করা হোক বা না হোক বিবৃতি চলে। একটি চূড়ান্ত বিবৃতি ব্যবহার করার জন্য আমাদের প্রতিশ্রুতি কল আপডেট করুন:

returnName.then(data => {
	console.log(data);
}).catch(error => {
	console.log(error);
}).finally(() => {
	console.log("The returnName promise has been executed.");
});

আমাদের কোড ফিরে আসে:

দারুচিনি

returnName প্রতিশ্রুতি কার্যকর করা হয়েছে।

আমাদের প্রতিশ্রুতি Cinnamon ফেরত দেয় কারণ এটি সফল ছিল। finally() এর বিষয়বস্তু তারপর বিবৃতি কার্যকর করা হয়, যা আমাদের কনসোলে অন্য বার্তা ফেরত দেয়।

উপসংহার

জাভাস্ক্রিপ্ট প্রতিশ্রুতি আপনাকে পরিষ্কার অ্যাসিঙ্ক্রোনাস কোড লিখতে অনুমতি দেয়।

এই নির্দেশিকাতে, আমরা প্রতিশ্রুতির মৌলিক বিষয়গুলি কভার করেছি। প্রতিশ্রুতির আরও অনেক কিছু আছে যা আমরা এই নির্দেশিকায় কভার করেছি। আপনার শেখার যাত্রার পরবর্তী ধাপ হল আপনার নিজের কোডে কয়েকটি প্রতিশ্রুতি লিখুন।

এখানে একটি চ্যালেঞ্জ:একটি প্রতিশ্রুতি লিখুন যা একটি ওয়েব অনুরোধ করে এবং এর প্রতিক্রিয়া প্রদান করে। এটি করার জন্য, আপনি একটি অনুরোধ করতে fetch() API ব্যবহার করতে চান। এই অনুরোধ একটি প্রতিশ্রুতি মধ্যে আবদ্ধ করা উচিত. আপনার এমন কোড লিখতে হবে যা প্রতিশ্রুতিটি সফল বা ব্যর্থ হলে উভয়ই পরিচালনা করে।

আপনি যদি আরও যেতে চান, জাভাস্ক্রিপ্ট অ্যাসিঙ্ক ফাংশনগুলি দেখুন। এগুলি অ্যাসিঙ্ক্রোনাস কোড লিখতে ব্যবহার করা যেতে পারে এবং সাধারণত প্রতিশ্রুতির সাথে ব্যবহার করা হয়।

এখন আপনি একজন বিশেষজ্ঞের মতো জাভাস্ক্রিপ্ট প্রতিশ্রুতি লেখা শুরু করতে প্রস্তুত!


  1. কিভাবে জাভাস্ক্রিপ্ট ফাংশন ব্যবহার করবেন:একটি ধাপে ধাপে নির্দেশিকা

  2. কিভাবে একটি HTML পৃষ্ঠা পুনঃনির্দেশিত করতে JavaScript ব্যবহার করবেন?

  3. জাভাস্ক্রিপ্ট প্রতিশ্রুতি

  4. জাভাস্ক্রিপ্ট ফাংশনে নামযুক্ত আর্গুমেন্টগুলি কীভাবে ব্যবহার করবেন?