سلام و خسته نباشيد
من يه سوال داشتم . توي يكي از پيج هاي سايت كاربر تعداد زيادي سريال رو تو زمان كم به وسيله باركد خوان ميخونه مثلا 18 تا توي 5ثانيه. در حالتي كه با اين سرعت اطلاعات خونده نشه مشكلي نداره برنامه ولي توي سرعت يه تعداد از سريال ها با اينكه با باركد خوان خونده ميشن ولي جا ميمونه و ذخيره ايي انجام نميشه. خواستم اگه ميشه در اين مورد راهنمايي كنيد كه چيكار بايد كرد كه تعدادي از سريال ها اينجوري نشه. الان از بين همون 18 تا حدود 14 تا رو ميخونه و ذخيره ميكنه ولي مابقي رو نه
مرسي
چگونه این مسئله را مدیریت کردید ؟
مرسي از توجهتون به سوال ها.
از ابزار خاصي براي اينكار استفاده نكردم سريال ها تعداد مشخصي دارند و بعدش يه enter ميخوره با event اين رو كنترل كردم و بعدش يه فانكش رو كال كردم و ذخيره رو سمت سرور انجام دادم و يه نتيجه برگردوندم
یعنی شما با هر سریال یک فانکشن صدا میزنید
خب اینطوری احتمال خطا بالاست
باید بزارید تموم بشه و در انتها همه رو ارسال کنید
احتمال هنگ کردن مرورگر بسیار بالاست
مشخص نيست كه كي تموم ميشه سريال ها
روال اينجوريه كه يه سريال رو ممكنه دستي ثبت كنه يا با باركدخوان. درصورتي كه با باركد خوان باشه و سريال معتبر نباشه بايد به ازاي هر كدوم پيغام خطا نشون بده. پيشنهادتون اينه كه من اين سريالها رو توي يه ارايه بريزم و بعد ارسال كنم؟در اين حالت نيازه كه كاربر يه button رو كليك كنه كه واسه اين حالت محدوديت دارم چون تا جايي كه ممكنه بايد استفاده از كيبورد رو كم كنم. از طرفي پيغام خطاها رو هم بايد يه جوري نشون بدم.
نميدونم چطور ميشه اين حالت رو كنترل كرد
میتونید تایمر بزارید اگر تا چند ثانیه بارکدی نیومد ارسال کنه
سلام استاد میشه یک رفرنس خوب برای استفاده از بارکد خوان در پروژه معرفی کنید
آیا میتوان دردستگاه هایی که دوربین دارند از دوربین دستگاه استفاده کرد؟
این لینک رو ببینید
var SerialList = [] var InProccess = false; var index = 0; function onkeypress(event, value) { if (event.keyCode != 13 && event.keyCode != 9) { serial = value.value + String.fromCharCode(event.which); if (....) { SerialList.push(serial); if (!InProccess) PartSerialNO_Change(); serial = ""; } } else { $("#XXX").val(""); $("#XXX").focus(); serial = ""; return; } } function PartSerialNO_Change() { while (index < SerialList.length) { InProccess = true; value = SerialList[index]; index = index + 1; } InProccess = false; }
ببينيد تكه كدي كه استفاده كردم اينه تقريبا. يه ارايه گرفتم كه توي رويداد keypress صداش ميزنم زماني كه به اندازه خاصي برسه اون سرياله به ارايه اضافه ميشه. وقتي كه بار اول اضافه شد يه متد رو صدا ميزنه كه توي اون متد به اندازه سايز ارايه ميخواد ورود اطلاعات كنه. در همين حين ممكنه كاربر يه سريال ديگه رو هم بخونه درست زماني كه حلقه من در حال انجامه واسه همين از inproccess استفاده كردم كه تنها در صورتي مجدد متد فراهواني شه كه كار حلقه تموم شده باشه در غير اينصورت حلقه داره كار خودش رو ميكنه
اتفاقي كه ميفته اينه كه ارايه به اندازه سريال هايي كه ميخونم پر نميشه. علت اين به نظرتون چيه؟آيا به رويدادي كه فراخواني كردم ربط داره؟يا نه مسئله ديگه ايي ممكنه وجود داشته باشه
كسي نيست به اين سوال جواب بده ؟؟؟
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)