استطلاع الخادم مع اياكس و دوجو
-
20-09-2019 - |
سؤال
أنا باستخدام دوجو.xhrPost إلى إرسال طلبات اياكس
الدعوة ملفوفة من قبل function sendRequest()
أنا الآن بشكل مستمر (كل 3 ثانية) إرسال نفس اياكس بعد إلى الخادم
كيف يمكنني تنفيذ خادم الاستطلاع مع مدرسة ؟ أنا في الأساس تحتاج إلى استدعاء sendRequest()
كل 3 ثوان
المحلول
وأنا لا أعتقد أن دوجو لديه أسلوب مضمنة للاقتراع، لذلك هنا طريقة عامة وهذا ينطبق في جميع أنحاء الأطر
var Poll = function(pollFunction, intervalTime) {
var intervalId = null;
this.start = function(newPollFunction, newIntervalTime) {
pollFunction = newPollFunction || pollFunction;
intervalTime = newIntervalTime || intervalTime;
if ( intervalId ) {
this.stop();
}
intervalId = setInterval(pollFunction, intervalTime);
};
this.stop = function() {
clearInterval(intervalId);
};
};
والاستعمال:
var p = new Poll(function() { console.log("hi!"); }, 1000);
p.start();
setTimeout(function() { p.stop();}, 5000);
وأو في قضيتك:
var p = new Poll(sendRequest, 3000);
p.start();
إذا كنت تريد هذا كحزمة دوجو، ثم ما يلي هو امتداد تافهة:
dojo.provide("Poll");
dojo.declare("Poll", null, {
intervalId: null,
pollFunction: null,
intervalTime: null,
constructor: function(newPollFunction, newIntervalTime) {
this.pollFunction = newPollFunction;
this.intervalTime = newIntervalTime;
},
start: function(newPollFunction, newIntervalTime) {
this.pollFunction = newPollFunction || this.pollFunction;
this.intervalTime = newIntervalTime || this.intervalTime;
this.stop();
this.intervalId = setInterval(this.pollFunction, this.intervalTime);
},
stop: function() {
clearInterval(this.intervalId);
}
});
والاستعمال:
var p = new Poll(function() {console.log("hi");}, 250);
p.start();
setTimeout(dojo.hitch(p, p.stop), 1000);
نصائح أخرى
لقد وجدت أنه من الأفضل أن تفعل مثل هذا:
- يكون متغير يحتوي على صفيف فارغ (طابور)
- setInterval إلى استطلاع على كل استطلاع, دفع وجوه جديدة (مع استطلاع المعلمات) في صف (طابور);يمكنك أيضا ضغط استطلاعات الرأي قبل الانهيار الكائنات مع نفس المعلمات في واحدة الكائن ؛ يمكنك حتى وضع معالج المهام في هذه الكائنات
- يكون توقيت فحص الانتظار ؛ إذا كان أي شيء, يعود
- إذا كان هناك انتظار الكائن في انتظار يتحقق إذا كان هناك بالفعل في انتظار xhr العملية التي قد لا عاد انتظر فقط -- كنت لا تريد الكثير من xhr المعلق في وقت واحد ، بعض الأجهزة (مثلآي باد) الإختناقات على ذلك
- إذا كان هناك أي انتظار xhr العملية ، dequeue أول استطلاع للرأي موضوع xhrGet ذلك
الاستفادة من هذا الإجراء هو أنه يمكنك بسهولة خنق استطلاع فترات يعمل بشكل جيد عند بعض xhr العمليات الوقت و يمكن بسهولة تنفيذ خصخصة الاقتراع الطلبات.
لتحديث مستمر الشبكة الخاصة بك يمكنك تضمين طلب اياكس الخاصة بك في وظيفة رد الاتصال "، التحديث الكامل" من الشبكة.
yourGrid.on('dgrid-refresh-complete', function(event) {
//Ajax request fireing every 3 sec
}