سؤال

أنا باستخدام دوجو.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);

نصائح أخرى

لقد وجدت أنه من الأفضل أن تفعل مثل هذا:

  1. يكون متغير يحتوي على صفيف فارغ (طابور)
  2. setInterval إلى استطلاع على كل استطلاع, دفع وجوه جديدة (مع استطلاع المعلمات) في صف (طابور);يمكنك أيضا ضغط استطلاعات الرأي قبل الانهيار الكائنات مع نفس المعلمات في واحدة الكائن ؛ يمكنك حتى وضع معالج المهام في هذه الكائنات
  3. يكون توقيت فحص الانتظار ؛ إذا كان أي شيء, يعود
  4. إذا كان هناك انتظار الكائن في انتظار يتحقق إذا كان هناك بالفعل في انتظار xhr العملية التي قد لا عاد انتظر فقط -- كنت لا تريد الكثير من xhr المعلق في وقت واحد ، بعض الأجهزة (مثلآي باد) الإختناقات على ذلك
  5. إذا كان هناك أي انتظار xhr العملية ، dequeue أول استطلاع للرأي موضوع xhrGet ذلك

الاستفادة من هذا الإجراء هو أنه يمكنك بسهولة خنق استطلاع فترات يعمل بشكل جيد عند بعض xhr العمليات الوقت و يمكن بسهولة تنفيذ خصخصة الاقتراع الطلبات.

لتحديث مستمر الشبكة الخاصة بك يمكنك تضمين طلب اياكس الخاصة بك في وظيفة رد الاتصال "، التحديث الكامل" من الشبكة.

yourGrid.on('dgrid-refresh-complete', function(event) { 

//Ajax request fireing every 3 sec


}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top