در بعضی از سایتها به دلیل حجم بالای درخواستها، ممکن است بعضی از تلاشهای کاربران برای ورود با خطا مواجه شود و کاربر مجدد درخواست ورود را ارسال کند ،حالا ما میخواهیم به صورت خودکار این کار را انجام دهیم تا اطلاعات بیشتری از ورود کاربران دریافت کنیم. این کار کمک میکند بفهمیم کاربر در چندمین تلاش با موفقیت وارد میشود و چه مقدار زمان طول میکشد تا به نتیجه برسد.
پروژه اولیه را از این لینک دانلود کنید.
ساختار فایلهای این پروژه به صورت زیر است:
اطلاعاتی که در نهایت خواهیم داشت به شکل زیر است:
در این سوال تابع login
به شما داده شده است و تنها نیاز است تا تابع loginAndTry
را پیادهسازی کنید. در ادامه توضیحاتی درباره هر کدام از توابع آورده شده است.
login
تمام درخواستهای ورود کاربر توسط تابعی به نام login
انجام میشود که به عنوان ورودی یک نامکاربری دریافت میکند. این تابع بعد از ارسال درخواست به سرور، یک پاسخ از نوع آبجکت که شامل status
و responseTime
خواهد بود را به ما برمیگرداند که به ترتیب وضعیت درخواست و زمان دریافت پاسخ است. (زمان پاسخ بین ۱ تا ۲۰۰ میلیثانیه خواهد بود.)
نکته: این تابع در حال حاضر در اختیار شما قرار داده شده است و نیازی به پیادهسازی آن نیست.
loginAndTry
حالا باید با استفاده از تابع loginAndTry
درخواستهایی که توسط تابع login
سمت سرور ارسال شدهاند را مدیریت کنید و در نهایت یک آبجکت که شامل مقادیر try
،status
و timeSpent
است را خروجی بدید.
تابع loginAndTry
دو ورودی دریافت خواهد کرد که ورودی اول، نام کاربری شخص و ورودی دوم، تعداد تلاشهای مجاز برای این کاربر خواهد بود. (برای جلوگیری از فشار مضاعف روی سرور، تعداد تلاشهای مجدد کاربر حداکثر ۱۰ خواهد بود.) شما باید تابع را به شکلی کامل کنید تا به تعداد دفعات خواسته شده (ورودی دوم تابع) درخواست ورود به سمت سرور ارسال کند و بلافاصله بعد از اولین درخواست موفق، مقادیر خواسته شده را برگرداند.
تابع loginAndTry
را به شکل زیر فراخوانی میکنیم.
با استفاده از فراخوانی تابع login
داخل تابع loginAndTry
تعدادی درخواست ورود (حداکثر ۵ درخواست) ارسال میکنیم، دو درخواست اول ناموفق است که به ترتیب ۱۱۲ و ۷۲ میلیثانیه زمان برده است. ولی درخواست سوم موفقیتآمیز خواهد بود و زمان پاسخ از سمت سرور ۳۵ میلیثانیه است. پس خروجی نهایی تابع به شکل زیر خواهد بود:
loginAndTry
دو مقدار به عنوان ورودی میگیرد. مقدار اول یک رشته که نام کاربری خواهد بود و مقدار دوم یک عدد که حداکثر تعداد درخواست ورود به سرور است.loginAndTry
باید یک آبکجت باشد با مقادیر try
, status
و timeSpent
که به ترتیب شماره درخواست موفق، وضعیت نهایی و مجموع مدت زمان درخواستها است.login
استفاده کنید. ورودی این تابع یک رشته خواهد بود که نامکاربری است.status
در خروجی نهایی برابر false خواهد بود.main.js
هستید و فایل ارسالی شما هم باید main.js
باشد.