آموزش کامل node js رایگان – قدم چهارم : تابع کالبک یا callback function

تابع کالبک node js یا کالبک فانکشن را در چهارمین قدم برای آموزش Node js شروع میکنیم. اگر با این موارد کاملا آشنایی و تسلط دارید میتوانید به قدم بعدی بروید.

ما هر هفته شنبه دو موضوع در خصوص node js را بررسی و آموزش میدهیم تا بتوانیم تمام موضوعات آنرا پوشش دهیم میتوانید لیست تمامی موضوعات را در اینجا ببینید و خودتان تصمیم بگیرید که کدام قسمت برای شما مفید تر است.

آموزش طراحی سایت : html

مهارت های لازم برای طراحی سایت

کاربرد callback function

فرض کنید که یک هدیه از اینترنت برای همسایه خود سفارش داده اید. و وظیفه دارید زمانی که این هدیه رسید شما آن را دریاف کنید و به همسایه خود مراجعه کنید و تحویل دهید.

دو راهکار وجود دارد.

راهکار اول : شما به بیرون میروید و آن قدر انتظار میکشید تا بسته ی شما برسد سپس آن را به همسایه خود میدهید و به خانه بازمیگردید و مشغول کار های روزمره میشوید.

راهکار بهتر: شما مشغول کار های روزمره میشوید ، تا زمانی که بسته ی شما برسد ، بیرون میروید و آن را تحویل گرفته و به همسایه ی خود میدهید. سپس به خانه بازمیگردید تا مشغول کار های روزمره شوید.

 

حال بیایید به فضای اینترنت باز گردیم. سرور نیز مانند شما برای پاسخگویی به مشتری ها دو راهکار دارد. میتواند آنقدر منتظر پایگاه داده باشد ، تا بسته ی مشتریان اماده شود ، (در این حالت هر مشتری که از راه برسد باید منتظر باشد تا کار مشتری قبلی تمام شود) یا میتواند به پایگاه داده بگوید ، “که به مشتری های دیگر رسیدگی میکند ، تا بسته ی مورد نظر آماده شود.”

زمانی که بسته ی مورد نظر آماده شد ، پایگاه داده سرور را باز فرا میخواند (callback) حال سرور میتواند بسته ی مورد نظر مشتری ررا تحویل دهد.

پیاده سازی راهکار اول بدون کالبک

فرض کنید سه مشتری داریم که هر سه درخواستی از پایگاه داده دارند. این ها را به صورت نمادین با console.log «مایش میدهیم ، اما این درخواست میتواند هرگونه کدی باشد.

console.log("کاربر اول درخواست دارد");

console.log("پایگاه داده 5 ثانیه زمان میگیرد");

console.log("بسته تحویل داده شد");

 

console.log("کاربر دوم درخواست دارد");

console.log("پایگاه داده 5 ثانیه زمان میگیرد");

console.log("بسته تحویل داده شد");

 

console.log("کاربر سوم درخواست دارد");

console.log("پایگاه داده 5 ثانیه زمان میگیرد");

console.log("بسته تحویل داده شد");

همان طور که میبینید اگر دستورات از بالا به پایین اجرا شود مشتری آخر حداقل 10 ثانیه زمان میخواهد تا بتواند تازه درخواست خود را ارسال کند. این شاید به نظر بی اهمیت آید اما فرض کنید که گوگل به این صورت بود و شما کاربر 4000 ام بودید. شما باید حداقل 20000 ثانیه صبر کنید ، بیش از چند ساعت!!!

پیاده سازی راهکار دوم با کالبک

برای اینی کار ، سرور تمام دستورات کاربران را در ثانیه باید بگیرد ، یعنی درخواست شما برای گوگل باید همان ثانیه اول دریافت شود. درخواست ها باید به پایگاه داده شود ، و پس از اجرا آنها تحویل داده شود.

حال ما این کار را با نوشتن یک function برای فرآیند زمان بر انجام میدهیم.

function Callback(){

console.log("بسته پس از 5 ثانیه تحویل داده شد.");

}

برای نمایش زمان تاخیری که پایگاه داده نیاز دارد از تایمر استفاده میکنیم. اما این کار در واقعیت اتفاق نمی افتد.

console.log("کاربر اول درخواست دارد");

setTimeout(Callback,5000);

console.log("کاربر دوم درخواست دارد");

setTimeout(Callback,5000);

console.log("کاربر سوم درخواست دارد");

setTimeout(Callback,5000);

حال هر سه درخواست در آن ثانیه دریافت میشود ، و هر کاربر پس از 5 ثانیه پاسخ خود را میگیرد.

راهکار اول حداقل 15 ثانیه زمان نیاز داشت.

راهکار دوم حداقل 5 ثانیه زمان میخواهد ، یعنی 60 درصد بهتر.

 


0 Comments

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

خدمات ایرابرود

تعرفه تبلیغات اینترنتی ثبت آگهی ارزان رپورتاژ ارتباط با ما

RABROD

Copyright © · All Rights Reserved designed & developed by · irabrod.ir