আমি এখন কয়েক বছর ধরে ওয়েব-ভিত্তিক জাভাস্ক্রিপ্ট (ভ্যানিলা জেএস, জকিউয়ারি, ব্যাকবোন, ইত্যাদি) করছি এবং সম্প্রতি আমি নোড.জেএস এর সাথে কিছু কাজ করছি "নন-ব্লকিং" প্রোগ্রামিংয়ের হ্যাং পেতে আমার কিছুটা সময় লেগেছিল, তবে আমি এখন আইও অপারেশনগুলির জন্য কলব্যাকগুলি ব্যবহার করতে অভ্যস্ত হয়েছি এবং কী নয়।
আমি বুঝতে পারি যে জাভাস্ক্রিপ্ট প্রকৃতির দ্বারা একক থ্রেডযুক্ত। আমি নোড "ইভেন্টের সারি" ধারণাটি বুঝতে পারি। আমি যা বুঝতে পারি না তা হ'ল যা কোনও পৃথক জাভাস্ক্রিপ্ট অপারেশন "ব্লকিং" বনাম "অ-ব্লকিং" কিনা তা নির্ধারণ করে। আমি কীভাবে জানতে পারি যে পরবর্তী কোডগুলিতে আমার জন্য সিঙ্ক্রোনালি আউটপুট উত্পাদন করতে আমি কোন অপারেশনের উপর নির্ভর করতে পারি এবং কোনটি আমাকে কলব্যাকগুলি পাস করতে হবে যাতে প্রাথমিক অপারেশন শেষ হওয়ার পরে আমি আউটপুটটি প্রক্রিয়া করতে পারি? এমন কি কোথাও জাভাস্ক্রিপ্ট ফাংশনগুলির একটি তালিকা রয়েছে যা অ্যাসিনক্রোনাস / অ-ব্লকিং, এবং সিঙ্ক্রোনাস / ব্লকিংয়ের একটি তালিকা রয়েছে? আমার জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনটি এক বিশাল দৌড়ের অবস্থা হতে বাধা দিচ্ছে কি?
আমি জানি যে অপারেশনগুলি যে দীর্ঘ সময় নেয়, যেমন ওয়েবে নোডে আইও অপারেশন এবং ওয়েবে অ্যাজেএক্স অপারেশনগুলি, তাদের অ্যাসিনক্রোনাস হওয়া প্রয়োজন এবং তাই কলব্যাকগুলি ব্যবহার করা উচিত - তবে কে "দীর্ঘ সময়" হিসাবে যোগ্যতা নির্ধারণ করছে? এই ক্রিয়াকলাপগুলির মধ্যে কি এমন কোনও ট্রিগার রয়েছে যা এগুলিকে সাধারণ "ইভেন্টের সারি" থেকে সরিয়ে দেয়? যদি তা না হয় তবে ভেরিয়েবলগুলিকে মান নির্ধারণ করা বা অ্যারেগুলির মাধ্যমে লুপিংয়ের মতো সাধারণ ক্রিয়াকলাপগুলির থেকে কী তাদের আলাদা করে তোলে, যা দেখে মনে হয় যে আমরা সিঙ্ক্রোনাস পদ্ধতিতে শেষ করতে নির্ভর করতে পারি?
সম্ভবত আমি এটি সম্পর্কে সঠিকভাবে ভাবছিও না - এই আশায় যে কেউ আমাকে সোজা করে দিতে পারে। ধন্যবাদ!