Как остановить функцию через десять секунд? - PullRequest
0 голосов
/ 15 декабря 2018

Я нашел этот фрагмент кода, пытаясь найти способ загрузить страницу reddit, чтобы я мог использовать ctrl + f, чтобы найти конкретную запись.Проблема в том, что он просто продолжает прокручивать и загружать страницы.Мне нужно найти способ остановить это через 10 секунд, чтобы я мог посмотреть, что я загрузил.Также я не знаю javascript, поэтому я не смог найти ничего, что могло бы мне помочь.

Вот код

var lastScrollHeight = 0;
function autoScroll() {
  var sh = document.documentElement.scrollHeight;
  if (sh != lastScrollHeight) {
    lastScrollHeight = sh;
    document.documentElement.scrollTop = sh;
  }
}
window.setInterval(autoScroll, 100);

Я просто вставил его в консоль Firefox.

Ответы [ 5 ]

0 голосов
/ 15 декабря 2018

Вы можете использовать setTimeout для вызова функции до истечения 10 с.

Вот функция, вызываемая немедленно, которая вызывает себя каждые 100 с до достижения 10 с.

(function autoScroll(t) {
  t = t || 0;
  if (t < 10000) {
    console.log(t);
    setTimeout(autoScroll, 100, t += 100);
  }
})();
0 голосов
/ 15 декабря 2018

Вам просто нужно вызвать clearInterval для вашей зацикленной функции, чтобы остановить ее после использования setTimeout, установленного на 10 секунд, вот как вы можете это реализовать:

var lastScrollHeight = 0;
function autoScroll() {
    var sh = document.documentElement.scrollHeight;
    if (sh != lastScrollHeight) {
        lastScrollHeight = sh;
        document.documentElement.scrollTop = sh;
    }
}
const interval = window.setInterval(autoScroll, 100);
window.setTimeout(() => {clearInterval(interval)}, 10000);
0 голосов
/ 15 декабря 2018
....
var intervalID = window.setInterval(autoScroll, 100);

setTimeout(function(){
    clearInterval(intervalID);
}, 10000);
0 голосов
/ 15 декабря 2018

Чтобы остановить интервал через определенное время, используйте setTimeout(), который вызывает clearInterval().Вот упрощенная версия (с уменьшенным временем до 1 секунды для демонстрационных целей), которая должна помочь:

function autoScroll(){
  console.log("running")
}

// save a reference to the interval handle
let interval = window.setInterval(autoScroll, 100);

// cancel interval after 1 second (1000 ms)
setTimeout(() => clearInterval(interval), 1000)
0 голосов
/ 15 декабря 2018

Функция setInterval() возвращает идентификатор, который можно использовать для его остановки.Просто поместите его в метод setTimeout(), например:

var myInterval = setInterval(autoscroll, 100);
setTimeout(function(){ clearInterval(myInterval); }, 10000);
...