Недавно мне тоже нужно было что-то подобное. Для этого я написал класс ES6.
В моем решении я использовал События, чтобы уведомить другие компоненты о таймере. Вот скрипка, в которой я удовлетворял ваши потребности, но я оставил свои вызовы EventManager (), чтобы показать, что я на самом деле сделал. Используемый EventManager - это , этот . По умолчанию таймер отсчитывает с шагом 100 мс, но вы можете изменить это, вызвав startTimer () с выбранным интервалом.
class Timer {
constructor(maxTime, startValue = 0) {
// Actual timer value 1/10s (100ms)
this.value = startValue;
// Maximum time of the timer in s
this.maxTime = maxTime * 10;
this.timerRunning = false;
}
/**
* Starts the timer. Increments the timer value every 100ms.
* @param {number} interval in ms
*/
startTimer(interval = 100) {
if (!this.timerRunning) {
let parent = this;
this.timerPointer = setInterval(function() {
if (parent.value < parent.maxTime) {
parent.value++;
//EventManager.fire('timerUpdated');
$("span").text(parent.value / 10 + "/" + parent.maxTime / 10);
} else {
parent.stopTimer();
//EventManager.fire('timeExceeded');
$("button").text("Start");
this.resetTimer();
$("span").text("Countdown over");
}
}, interval);
this.timerRunning = true;
}
}
// Stops the Timer.
stopTimer() {
clearInterval(this.timerPointer);
this.timerRunning = false;
}
// Resets the timer and stops it.
resetTimer() {
this.stopTimer();
this.value = 0;
$("span").text("0/" + this.maxTime/10);
//EventManager.fire('timerUpdated');
}
// Resets the timer and starts from the beginning.
restartTimer() {
this.resetTimer();
this.startTimer();
}
}
let timer = new Timer(6);
$("#start-stop").click(function() {
if (timer.timerRunning) {
timer.stopTimer();
$("#start-stop").text("Start");
} else {
timer.startTimer();
$("#start-stop").text("Stop");
}
});
$("#reset").click(function() {
timer.resetTimer();
});
Timer:
Назвать некоторых.
Хорошо у Вас есть 100 запросов в час, таким образом, вопрос состоит в том, как Вы балансируете его между различными типами запросов. Я думаю, что наилучшим вариантом является путь, то, как TweetDeck, который позволяет Вам устанавливать процент и сохраняет остальную часть % для регистрации (потому что это важно также):
(источник: livefilestore.com)
Вокруг кэширования базы данных было бы хорошо, и я проигнорирую удаленные - после того как Вы загрузили твит, не имеет значения, если это было удалено. Если бы Вы хотели, то Вы могли в теории просто пытаться открыть страницу с твитом и если Вы получаете 404 затем, это было удалено. Это не означает стоимости против API.