PDA

View Full Version : توقف تا بازگشت پاسخ در جاوا اسکریپت



malloc
سه شنبه 17 شهریور 1394, 22:39 عصر
سلام به همه .... یه سوال دارم نمیدونم چطور بپرسم .....

شما فرض کنید من یه تابعی دارم که 40 خط کد داره .....خط 20 این تابع میخواد بره یه تابعی رو فراخونی کنه که مثلا یه باکسی رو نشون میده و باکس منتظر جواب کاربره .... حالا من میخوام تا وقتی که اون تابع خط 20 که اون باکس رو باز کرده و منتظر جواب کاربر هست جوابی نداده به خط 21 نره ..... اما الان اینطوریه که میره و منتظر نمیمونه

اگه متوجه نشدید بگید یجور دیگه بپرسم

مثلا اگه دقت کرده باشید توی دستورات .ajax یه دستور با نام done هست که وقتی کار سمت سروری ایجکس تموم میشه میره توی اون رویداد....

حالا میشه این ماجرا رو با تایمر پیاده کرد اما تایمر همش باید بره و یه مقداری رو چک کنه .... اما میخوام یه حالت وقفه داشته باشه و وقتی جوابی از اون خط مورد نظر برگشت تابع ادامه پیدا کنه ....مثل alert که تا اوکی نکنی نمیره خط بعدی

malloc
چهارشنبه 18 شهریور 1394, 21:28 عصر
کسی متوجه نشد بگه بیشتر توضیح بدم یا یجور دیگه توضیح بدم

aminmousavi
پنج شنبه 19 شهریور 1394, 03:49 صبح
سلام دوست عزیز . همانطور که گفتین من دیروز یکبار سوال شما رو دیدم اما حقیقتش دقیقا متوجه نشدم ، صورت سوالتون مشخص هست و ابهامی نداره ، اما اگر دقیقا بگید چه عملیاتی رو میخواهید پیاده سازی کنید فکر میکنم بیشتر بشه کمک کرد .
اما با همین توضیحی که دادین من یک راه حل به ذهنم رسید ، بیبینید به مشکلی که دارین کمک میکنه یا نه ؟

من فرض میگیرم شما یک تابع دارید که مثلا میخواید یک تاریخ رو بصورت combobox از کاربر دریافت کنه و بعد از آن حالا یک alert بده که تاریخ شما این هست ! مثل :

خط 1 : کدهای جاوا اسکریپت
خط 2 : کدهای جاوا اسکریپت
.
.
.
خط 10 : کدهای جاوا اسکریپت
خط 11 : باز شدن یک fancy باکس برای وارد کردن تاریخ بصورت combo
خط 12 : کدهای جاوا اسکریپت
.
.
.
خط 20 : کدهای جاوا اسکریپت
خط 21 : پیام alert

به نظرم میتونید تابع رو به دو تابع بشکنید ، یعنی خط اول تا 11 در یک تابع باشه که وقتی اون تابع صدا زده میشه عملیات رو انجام میده و fancy رو باز میکنه و تموم میشه .
بعد میتونید روی یک دکمه یا اونت onchange کمبو باکس یک تابع دیگر رو صدا کنید که خط 12 تا 21 رو صدا کنه .

malloc
پنج شنبه 19 شهریور 1394, 09:35 صبح
به نظرم میتونید تابع رو به دو تابع بشکنید ، یعنی خط اول تا 11 در یک تابع باشه که وقتی اون تابع صدا زده میشه عملیات رو انجام میده و fancy رو باز میکنه و تموم میشه .
بعد میتونید روی یک دکمه یا اونت onchange کمبو باکس یک تابع دیگر رو صدا کنید که خط 12 تا 21 رو صدا کنه .
درود به شرافتت داداش /.... اینی که گفتی کاملا درست .... من هم الان یه کار مشابه همین میکنم یعنی تا خط 11 رو گذاشتم توی یه تابع بعدش بصورت interval یه تابع دیگه رو فراخونی میکنم و منتظر جواب میمونم .....

اما میخواستم ببینم راهی هست که ما همشو توی یه تابع بنویسیم و نیازی به تابع دوم نباشه ..... یعنی دقیقا روی همون خط 11 برنامه صبر کنه تا جواب بیاد بعد بره خط های بعدی نه اینکه ما تا خط 11 رو توی یه تابع بنویسیم بقیشو توی یه تابع CallBack

مثلا شما دستور alert یا confirm رو ببین .... وقتی باز میشن تا کاربر جواب نده به ادامه تابع نمیره

fakhravari
جمعه 20 شهریور 1394, 13:55 عصر
توی تابعد done اون متد دیگری صدا بزنید