استفاده از setInterval برای به روز رسانی صفحه با jQuery

0 رأی
میانگین بازدید روزانه 0.4844 بازدید

صفحه ای داریم با چند بخش که قرار است محتوای هر بخش هر چند ثانیه به صورت ایجکس آپدیت بشود.

امکانات فعلی ما jquery است برای ارسال درخواست و دریافت و درج دیتا.

از تابع setInterval در هر بخش (مثلا ۱۰ بخش یا بلوک با تایم ۶۰ ثانیه) استفاده کردیم که اگر سمت سرور (php) دیتایی آماده داشت در صفحه وارد کنیم.

مشکل کند شدن فعالیت در صفحه رو داره مثلا روی لینک چند ثانیه گیر میکنه بعد رنگش عوض میشه یا اسکرول کردن با وقفه..
صفحه یا مرورگر بسته نمیشه فقط به شدت کند میشه.

لطفا ترفندی برای کنترل یا بهبود کد بهم بدید از جی‌کوئری یا فریم ورک دیگه که بتونه به فرض مثال مانند سایت tgju.org به نرمی نتایج رو به صورت ناهمزمان نمایش بده.

سوال 2 ماه قبل در تالار برنامه نویسی توسط 200 (60 امتیاز)
ویرایش 2 ماه قبل توسط moderator

1 جواب

+1 رأی

به صورت نوبتی setIntervalها را اجرا کنید.

به هر متد (بدنه ی Interval)یک شماره تخصیص بدهید بهتره به ترتیب باشه.

یک متغیر مشترک مثلا mN=1 را مقدار دهی کنید که مشخص میکنه الان نوبت کدام متد است که اجرا شود. مثلا الان که 1 است نوبت متدی است که شماره ی آن 1 است.

در بدنه ی متد، اول چک کنید که نوبت متد برای اجرا است اگر نوبتش است کار مورد نظر را اجرا می کنیم و نوبت را به متد بعدی میدهیم(اگر ajax کال میکنید نوبت را بعد از پاسخ ajax به متد بعدی بدهید). واگر اینطور نیست یک اینتروال دیگه تنظیم میکنیم تا نوبتش شود.

یعنی

var m1=function()
{
if(mN!==1)

{

setInterval(m1,100);

return;

}



....

if(++nM>10)

nM=1;

}
}
جواب 1 ماه قبل توسط Saeed Mirshams (176 امتیاز)
ویرایش 1 ماه قبل توسط moderator

سوال های مشابه

+1 رأی
0 جواب میانگین بازدید روزانه 0.11257 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.09147 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.0496 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1114 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.41641 بازدید
+1 رأی
2 جواب میانگین بازدید روزانه 0.38739 بازدید
+2 رأی
1 جواب میانگین بازدید روزانه 0.2417 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.08165 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.04106 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.13324 بازدید
کانال تلگرام جواب یاب
...