PDA

View Full Version : سوال: delay یا sleep در جاوا اسکریپ



abasfar
شنبه 27 اسفند 1390, 01:52 صبح
سلام
دوستان در مرورگرهای جدید برای delay دادن چیکار میکنید
setTimeout که برای زمانهای مثل یک دقیق کارای نداره
امدم از یک تابع مقایشه زمانی استفاده کنم ان را هم مرورگر اسکریپ لوپ شناخت اجازه ادامه نداد
میشه راهنمایی ام کنید ممنون

AMIBCT
شنبه 27 اسفند 1390, 09:07 صبح
setTimeout چه مشکلی دارد؟

abasfar
شنبه 27 اسفند 1390, 10:40 صبح
خوب من از این کد برای تخییر یک دقیقه ای استفاده میکنم اما کار نمیکنه

setTimeout(click("button2"),60*1000);

AMIBCT
شنبه 27 اسفند 1390, 10:57 صبح
پارامتر اول setTimeout دو حالت دارد یا یک تابع است یا رشته‌ای که محتوای آن دستورات جاوااسکریپت است:


setTimeout( 'click( "button2" )', 60 * 1000 );
setTimeout( function(){ click( "button2" ); }, 60 * 1000 );

مفاهیم جاوااسکریپت کمی پیچیده است
و برای شروع به کار وقت بیشتری برای مطالعه باید اختصاص بدهید
ابتدا کدهای نوشته شده را مطالعه و بررسی کنید و بعد خودتان شروع به کدنویسی کنید

abasfar
شنبه 27 اسفند 1390, 11:03 صبح
پارامتر اول setTimeout دو حالت دارد یا یک تابع است یا رشته‌ای که محتوای آن دستورات جاوااسکریپت است:


setTimeout( 'click( "button2" )', 60 * 1000 );
setTimeout( function(){ click( "button2" ); }, 60 * 1000 );

مفاهیم جاوااسکریپت کمی پیچیده است
و برای شروع به کار وقت بیشتری برای مطالعه باید اختصاص بدهید
ابتدا کدهای نوشته شده را مطالعه و بررسی کنید و بعد خودتان شروع به کدنویسی کنید

ممنون دوست عزیز اما من مشکل زمانی دارم ها نه فراخوانی تابع
یعنی setTimeout در زمان تعیین شده کار نمیکنه همش در یک زمان خاص اجرا میکنه
مثلا 60*1000 هم بزاریم و 600*1000 تفاوتی نداره باز در یک لحظه هر دو را فراخوانی میکند(در 4 مرورگر امتحان شده من)

AMIBCT
شنبه 27 اسفند 1390, 14:26 عصر
اگر دستورها را به صورتی که در کد نوشتم بنویسید مشکلی وجود ندارد

من آزمایش کردم و به خوبی کار می‌کند

دستوری که شما نوشته‌اید ایراد دارد

abasfar
شنبه 27 اسفند 1390, 20:42 عصر
ممنون دوست عزیز کمک زیادی کردین مشکل من با

clearTimeout(timer);

حل شد مشکل من این بود که مثل یک thread هر کدام setTimeout عمل میکردند یعنی به صورت حلقه وار همدیگر را فراخونی میکردند و چون زمان من لحظه به لحظه افزایش میافت
یعنی تخییر از 1 میلی ثانیه شروع میشد و بعد از مدتی به چند دقیقه میرسید که برنامه را یکم پیچیده میکرد
به هر حال حل شد
بازم ممنون