অন্যান্য উত্তরের সাথে চারপাশে খেলার পরে, এই কাজের জন্য আমার সমাধান এখানে। এইভাবে প্রয়োগ করা আমাকে ক্লিনআপটিকে এক জায়গায় কেন্দ্রীভূত করতে সহায়তা করে, পরিষ্কারটিকে ডাবল হ্যান্ডলিং প্রতিরোধ করে।
- আমি অন্যান্য প্রস্থানকৃত কোডগুলি 'প্রস্থান' কোডে রুট করতে চাই।
const others = [`SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`]
others.forEach((eventType) => {
process.on(eventType, exitRouter.bind(null, { exit: true }));
})
- প্রস্থানটি রাউটার যা করে তা হ'ল কলিং প্রসেস.এক্সিট ()
function exitRouter(options, exitCode) {
if (exitCode || exitCode === 0) console.log(`ExitCode ${exitCode}`);
if (options.exit) process.exit();
}
- 'প্রস্থান' এ, একটি নতুন ফাংশন সহ ক্লিন আপ পরিচালনা করুন
function exitHandler(exitCode) {
console.log(`ExitCode ${exitCode}`);
console.log('Exiting finally...')
}
process.on('exit', exitHandler)
ডেমো উদ্দেশ্যে, এটি আমার সংক্ষেপে লিঙ্ক । ফাইলটিতে, আমি প্রক্রিয়া চলমান জাল করতে একটি সেটটাইমআউট যুক্ত করি।
আপনি যদি চালান node node-exit-demo.jsএবং কিছু না করেন, তবে 2 সেকেন্ড পরে, আপনি লগটি দেখতে পাবেন:
The service is finish after a while.
ExitCode 0
Exiting finally...
অন্যথায় যদি পরিষেবাটি শেষ হওয়ার আগে আপনি এর মাধ্যমে শেষ করেন, আপনি ctrl+Cদেখতে পাবেন:
^CExitCode SIGINT
ExitCode 0
Exiting finally...
যা ঘটেছিল তা হল নোড প্রক্রিয়াটি কোড সাইনটিন্টের সাথে শুরুতে প্রস্থান করা হয়, তারপরে এটি প্রসেস.এক্সিট () এর দিকে যাত্রা করে এবং অবশেষে প্রস্থান কোড 0 দিয়ে বেরিয়ে আসে।