প্রমাণ, ডিফার্ড এবং ফিউচারের ধারণা
জাভাস্ক্রিপ্টে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের সময় এই তিনটি টার্ম প্রায় একই অর্থে ব্যবহৃত হয়, তবে এদের মধ্যে সূক্ষ্ম পার্থক্য রয়েছে।
Future (ফিউচার)
Future একটি পুরানো টার্ম যা বর্তমানে Promise-এর সমানামী হিসেবে বিবেচিত হয়। এটি একটি মান নির্দেশ করে যা ভবিষ্যতে পাওয়া যাবে।
Promise (প্রমিশ)
- এটি একটি প্রক্সি অবজেক্ট যা ভবিষ্যতে একটি মান (সফলতা বা ব্যর্থতা) প্রতিনিধিত্ব করে।
- প্রমিশ তৈরি করার সময় মান অজানা থাকে।
- এটির তিনটি অবস্থা থাকে:
pending,fulfilled(resolved),rejected। - এটি শুধুমাত্র পড়ার জন্য (read-only), অর্থাৎ বাইরের কোড থেকে এটি রিজলভ বা রিজেক্ট করা যায় না।
Deferred (ডিফার্ড)
- এটি একটি কম্পিউটেশন বা কাজের প্রতিনিধিত্ব করে যা এখনো সমাপ্ত হয়নি।
- সাধারণত
Deferredপ্রমিশ থেকে প্রসারিত হয় এবং এতেresolve()এবংreject()মেথড থাকে। - ডিফার্ড নিজেই নিজে রিজলভ বা রিজেক্ট করতে পারে, অর্থাৎ এটি প্রমিশের ऊपर নিয়ন্ত্রণ রাখে।
- jQuery-এর
$.Deferred()এর মতো লাইব্রেরিতে এটি পाए যাবে।
মূল পার্থক্য সারসংক্ষেপ
| বিষয় | Promise | Deferred |
|---|---|---|
| ভূমিকা | ভবিষ্যতের মানের প্লেসহোল্ডার | মান তৈরি করার কাজের প্রতিনিধিত্ব |
| নিয়ন্ত্রণ | বাহির থেকে রিজলভ/রিজেক্ট করা যায় না | নিজে রিজলভ/রিজেক্ট করতে পারে |
| ব্যবহার | আধুনিক JS-এ স্ট্যান্ডার্ড (ES6+) | লিগ্যাসি লাইব্রেরি (যেমন jQuery) spécifique |
আধুনিক জাভাস্ক্রিপ্টে (ES6+) শুধুমাত্র Promise ব্যবহার করা পরামর্শ দেওয়া হয়। Deferred প্যাটার্ন বর্তমানে প্রচলন থেকে বাইরে।