انتهت مشكلة الانتظار سمسم وظيفة تنفيذ قبل أن يحاول لتنفيذ مرة أخرى

StackOverflow https://stackoverflow.com/questions/822653

سؤال

وأنا باستخدام .scroll $ (إطار) ()؛ لتحديد وظيفة لتكون الدعوة لحين تمرير المستخدم قريبة جدا من أعلى أو أسفل.

وظيفة يأخذ ثانية لتنفيذ، وإذا استمروا التمرير، يتم تنفيذها عدة مرات قبل أن أول واحد حتى الانتهاء.

هل هناك أي طريقة يمكن أن تسمح وظيفة تبدأ تنفيذ ثم تقول ظيفة .scroll () و$ (إطار) أنه يحتاج إلى الانتظار قبل تنفيذ هذه المهمة مرة أخرى؟

هل كانت مفيدة؟

المحلول

هل يمكن تحديد منطقية أنك تتحقق بالفعل موقف التمرير:

checkingPosition = false;
$window.scroll(function() {
   if(checkingPosition) return;
   checkingPosition = true;
   //do stuff
   checkingPosition = false;
});

نصائح أخرى

وكنت تفعل شيئا من هذا القبيل لتجنب المشاكل نطاق / الارتباك عن طريق التغليف البيانات إلى كائن ... في هذه الحالة، الكائن مسج (على عنصر الإطار):

$(function() {
    $(window).data('checking_scroll',false);
    $(window).scroll(function() {
        if($(this).scrollTop() >= 200 /* or whatever... */) {
            if($(this).data('checking_scroll') === true) {
                return false;
            } else {
                whatever_function();                   
            }     
        }
    });
});

function whatever_function() {
    $(window).data('checking_scroll',true);
    // do all your stuff...
    $(window).data('checking_scroll',false);
}

و... ولكن هذا مجرد لي.

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