2017-05-18 14 views
1

スクロールするChrome拡張機能を作成しています&は親ノードに新しく追加された子ノードを待ち受けます。イベントに基づいてJSのランダムなタイミングでスクロールを自動化

これはランダムな時間だけ待機し、さらに子供が追加されるともう一度スクロールし、次の5秒間に停止するとajaxで何も表示されません(たとえば、結果のリストが使い果たされた場合)。

私の質問は、各イベントのスクロール反応の間にさまざまな時間を待つことをどのように処理すべきかということです。

丁寧に作業したいのですが(50個の要素がすべて一度に読み込まれ、生成されたスクロールが次のajaxロードポイントに到達するには十分ではない場合)

私はこれについて考える必要がありますか? (これはところで、完全に良性のユースケースのためである)

+0

なぜ、 'setTimeout()'と 'clearTimeout()'はありませんか? – Ouroborus

答えて

0

良い解決策は少しトリッキーですが、完全に動作します:

this wonderful answerから適応
var canPoll = true; 
var timeout = ... whatever ...; // if we want an absolute timeout 
var startTime = (new Date()).getTime(); 

function randomWait(t) { 
    // ... waits a random period of time 
} 

function isDone() { 
    // ... check if done. returns boolean 
} 

function complete() { 
    // ... run when everything is done 
} 

(function recursive() { 
    // check for our absolute walltime timeout 
    canPoll = ((new Date).getTime() - startTime) <= timeout; 

    // check other conditions too 
    if (!fn() && canPoll) { 
     // repeat! 
     setTimeout(recursive, randomWait(interval)); 
    } else { 
     // we're done 
     complete(); 
    } 
})(); 

関連する問題