از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش خروج از Node.js در این آموزش راه های مختلف روش خروج از برنامه های Node.js را به شما نشان خواهیم داد. ابتدا باید بدانید که Node.js کار می کند روی یک رشته یا اصلی process. شما می توانید فرآیندهای فرزند اضافی را برای انجام کارهای اضافی ایجاد کنید. خروج از اصلی process به ما اجازه خروج می دهد …
سرفصلهای مطلب
در این آموزش راه های مختلف خروج از برنامه های Node.js را به شما نشان خواهیم داد. ابتدا باید بدانید که Node.js کار می کند روی یک رشته یا اصلی process. شما می توانید فرآیندهای فرزند اضافی را برای انجام کارهای اضافی ایجاد کنید. خروج از اصلی process به ما اجازه می دهد از Node خارج شویم.
در حالی که راههای زیادی برای خروج از Node وجود دارد، برخی از راهها برای موقعیتهای خاص بهتر از روشهای دیگر هستند، مانند اینکه آیا در حال اجرای REPL هستید یا خیر. در طول مقاله این موضوع را با جزئیات بیشتری توضیح خواهیم داد.
اجازه دادن به یک اسکریپت به طور ضمنی خارج شود
خروج از یک برنامه Node.js که در خط فرمان شروع شده است می تواند به سادگی انتظار برای پایان اجرای اسکریپت باشد. به طور ضمنی، Node.js process زمانی که به پایان اسکریپت برسد خارج می شود.
با اجرای scipt زیر می توانید این را ببینید:
// batman.js
console.log('Batman begins');
process.روی('exit', function(code) {
return console.log(`About to exit with code ${code}`);
});
برنامه را با دستور اجرا کنید node batman.js
و خواهید دید که اولین عبارت مربوط به بتمن است. علاوه بر این، “خروج” پاسخ به تماس شلیک می شود و در نتیجه a print خارج از پیام در مورد خروج، و یک کد خروج. شما باید چیزی شبیه به زیر ببینید:
$ node batman.js
Batman begins
About to exit with code 0
توجه داشته باشید که رویدادها و حلقه های معلق خروج برنامه را مسدود می کنند. این تابع تکراری را در انتهای اسکریپت بالا اضافه کنید.
// batman.js
// ...
setInterval((function() {
return console.log('I\'m Batman!');
}), 1000);
دوباره اجراش کن این بار، برنامه خارج نمی شود، زیرا تکرار می شود setInterval
تابع خروج Node.js را مسدود می کند. خروجی شما شبیه این خواهد بود:
$ node batman.js
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
...
جایی که “من بتمن هستم!” عبارت به طور مداوم چاپ می شود تا زمانی که به زور از آن خارج شوید، مانند با Ctrl + C
، یا خود را ببندید terminal.
استفاده کردن process.exit()
می توانیم با استفاده از explicit از برنامه های Node.js خارج شویم process.exit
فراخوانی تابع این process.exit
تابع از Node.js فعلی خارج می شود process. یک کد خروجی می گیرد که یک عدد صحیح است.
این process
شی یک متغیر سراسری است که به ما امکان می دهد Node.js فعلی را مدیریت کنیم process. از آنجایی که یک جهانی است، میتوانیم از هر جایی در داخل برنامه Node.js بدون استفاده به آن دسترسی داشته باشیم require
به import آی تی.
اجازه دهید آخرین برنامه ای را که به دلیل آن خارج نمی شود به روز کنیم setInterval
تابع. این بار با استفاده از a آن را مجبور به خروج می کنیم timeout
بعد از گذشت 5 ثانیه تابع زیر را به همان اسکریپت «batman.js» قبلی اضافه کنید.
// batman.js
// ...
setTimeout((function() {
return process.exit(22);
}), 5000);
وقتی می دوی node batman.js
، متوجه می شوید که این بار برنامه برای مدت محدودی اجرا می شود و سپس با کد خروجی 22 خارج می شود.
node batman.js
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
I'm Batman!
About to exit with code 22
استفاده کردن process.exit
برای خروج از REPL (که بعدا خواهیم دید) و همچنین برای خاتمه دادن به برنامه ها یا اسکریپت های Node.js در حال اجرا کار می کند.
Node.js کدهای غیر صفر را به عنوان شکست و کد خروج 0 را به عنوان موفقیت تفسیر می کند.
خروج از Node.js با استفاده از process.kill()
همچنین می توانیم با استفاده از Node.js خارج شویم process.kill
برای کشتن Node.js در حال اجرا process. تفاوت بین این و process.exit
آن است process.kill
را می گیرد pid، یا process شناسه، از process ما می خواهیم بکشیم، و همچنین اختیاری علامت که می خواهیم به آن ارسال کنیم process. این بدان معنی است که ما می توانیم سیگنال هایی را برای کشتن فرآیندهای غیر از Node.js اصلی ارسال کنیم process. این در برنامه های بسیار همزمان با بسیاری از فرآیندهای در حال اجرا مفید است.
برای کشتن گره اصلی process، ما فقط عبور می کنیم pid از اصلی process.
برای مشاهده عملکرد آن، آن را جایگزین کنید setTimeout
تابع در مثال کد قبلی ما با این نسخه که استفاده می کند process.kill
.
// batman.js
// ...
setTimeout((function() {
return process.kill(process.pid);
}), 5000);
برنامه خارج می شود روی برنامه ریزی مانند قبل، پس از چاپ برخی از عبارات مشابه. این بار pid نیز به چاپ می رسد console (ممکن است مال شما با 15 متفاوت باشد):
$ node batman.js
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
I'm Batman!
Terminated: 15
این روش در REPL و همچنین در برنامه های Node.js نیز کار می کند.
روش خروج از Node.js با استفاده از processسقط
به همین ترتیب، می توانیم استفاده کنیم process.abort
برای خروج از Node.js. این روش در REPL و همچنین اسکریپت ها و برنامه ها کار می کند.
تفاوت میان process.abort
، process.kill
، و process.exit
آن است process.abort
همیشه فوراً از Node.js خارج می شود و یک فایل اصلی تولید می کند. علاوه بر این، هیچ پاسخ تماس رویدادی اجرا نخواهد شد.
توجه داشته باشید: فایل اصلی که به آن اشاره شد اگر ایجاد نمی شود ulimit -c
تنظیم شده است 0
. دیدن این آموزش برای جزئیات بیشتر
برای مشاهده در عمل، آن را جایگزین کنید process.kill
با ما تماس بگیرید batman.js
فایل با تماس به process.abort
و اجرا node batman.js
.
// batman.js
// ...
setTimeout((function() {
return process.abort();
}), 5000);
وقتی برنامه را با node batman.js
، برنامه خطوط را مانند قبل چاپ می کند، اما پس از اتمام مهلت زمانی خارج می شود و برخی از اطلاعات مربوط به وضعیت برنامه را هنگام توقف چاپ می کند.
$ node batman.js
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
I'm Batman!
Abort trap: 6
REPL
از آنجا که REPL (بخوانید – ارزشیابی –print حلقه) یک نوع محیط اجرا متفاوت از اسکریپت Node.js معمولی شما است، این استراتژی های خروج سزاوار بخش های خاص خود هستند. این به این دلیل است که REPL یک محیط تعاملی است و مانند یک اسکریپت فقط به طور ضمنی خارج نمی شود.
همانطور که قبلاً در برخی از بخش های قبلی ذکر کردیم، برخی از استراتژی های بالا در REPL نیز کار خواهند کرد. با این حال، استفاده از آنها در این مورد معمولی نیست و در عوض باید از روش های زیر استفاده کنید.
خروج با استفاده از ترکیب کلید
برخلاف vim، خروج از REPL بسیار ساده است. در یک REPL در حال اجرا، می توانید با استفاده از کلید ترکیبی از آن خارج شوید Ctrl + C
، و دوبار آن را کلید می زنیم. این می فرستد SIGINT، یا سیگنال وقفه به REPL. این معمولا برای خروج از برنامه ها در سیستم های POSIX استفاده می شود.
با استفاده از دستور exit
همچنین می توانیم با استفاده از دستور “.exit” از یک Node.js REPL خارج شویم. وقتی این را در یک Node REPL در حال اجرا وارد می کنید، REPL فعلی خارج می شود. این فراخوانی شبیه به Ctrl + C
روش مورد بحث در بالا
نتیجه
در بسیاری از موارد با استفاده از process.exit
برای خروج از Node.js کافی است. با این حال، همانطور که دیدیم، جایگزین های متعددی وجود دارد. روشهای مختلف به شما انعطافپذیری میدهد تا از هر مکان خاصی در کد خود خارج شوید. شما باید مراقب این قدرت اضافی باشید، با این حال، کد خطرناکی را وارد نکنید که می تواند منجر به خروج برنامه ریزی نشده و خرابی برنامه های شما شود.
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1403-01-27 10:09:03