0

ユーザーのすべてのフォロワーがページに表示されるまで、Twitter ページの下部に再帰的にスクロールしようとしています。一番下に到達するたびに、ロードするセグメントがなくなるまで別のセグメントをロードします。

function findStats(){
   a = $("a.js-nav");
   for(i = 0; i < a.length; i++){
     if(a[i].dataset.elementTerm === "follower_stats"){
        return a[i];}
     }
}

numberOfFol = function() {
    return Number(findStats().innerText.match(/\d+/)[0]);
}


var bottom = function(){
    scrollTo(0,document.height - $(window).height());
    if($(".fullname.js-action-profile-name").length<numberOfFol()){
        bottom();
    }
}

ループを使用して非再帰バージョンのbottom()を試しましたが、ページがフリーズするたびに、最後の再帰試行で、コンソールは最終的に最大スタックサイズを超えたエラーをスローしました. ページの読み込みに時間がかかることを考慮して、ループでsetTimeoutを試しましたが、同じことが起こりました(これは非再帰的なbottom関数の場合でした)。非再帰的なボトム関数は

var bottom = function(){scrollTo(0,document.height - $(window).height())}

さらに奇妙なのは、非再帰的なbottom関数を単独で呼び出すと、正常に機能し、問題なくページの下部に移動するという事実です(もちろん1回だけです)。

これらの関数が再帰/ループ時にスタックをオーバーフローするのはなぜですか?

4

0 に答える 0