Лучшие практики разработки приложений Твиттера?

Недавно мне тоже нужно было что-то подобное. Для этого я написал класс 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: 

7
задан splattne 20 March 2009 в 12:52
поделиться

2 ответа

Назвать некоторых.

  • Агрессивное кэширование. Не обращайтесь к API, если Вы не имеете к.
    • Я обычно выпадающий столько данных, сколько я могу заранее и сохранить его где-нибудь. Затем я действую от локального хранилища, пока оно не заканчивается и должно быть обновлено.
  • Постарайтесь не делать вещи в режиме реального времени. Стойте в очереди запросы и сделайте их на таймере.
    • Если Вы находитесь на Linux, cronjobs являются самым легким способом сделать это.
  • Объединение запрашивает как можно больше.
5
ответ дан 7 December 2019 в 05:30
поделиться

Хорошо у Вас есть 100 запросов в час, таким образом, вопрос состоит в том, как Вы балансируете его между различными типами запросов. Я думаю, что наилучшим вариантом является путь, то, как TweetDeck, который позволяет Вам устанавливать процент и сохраняет остальную часть % для регистрации (потому что это важно также): alt text
(источник: livefilestore.com)

Вокруг кэширования базы данных было бы хорошо, и я проигнорирую удаленные - после того как Вы загрузили твит, не имеет значения, если это было удалено. Если бы Вы хотели, то Вы могли в теории просто пытаться открыть страницу с твитом и если Вы получаете 404 затем, это было удалено. Это не означает стоимости против API.

3
ответ дан 7 December 2019 в 05:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: