Ни одного нарушения ax ios ошибка подключения для setTimeOut - PullRequest
0 голосов
/ 21 июня 2020

Я использую ax ios для подключения к боту Telegram, чтобы получать новые сообщения каждую секунду. Иногда я получаю ошибку подключения ax ios. Проблема в том, что это нарушает работу setTimeOut(). Я был предупрежден об этом при использовании этого метода, но он годился для тестирования. Сейчас я работаю над производством, поэтому мне нужно что-то более надежное, но простое.

Было предложено использовать задание cron, но это не вариант на сервере.

Есть ли лучший способ чтобы этот код просто принял ошибку и продолжил работу, это не приведет к другим проблемам?

getAPI(apiName) {
 return axios.get(`${this.getApiURL()}/${apiName}`);
}

getApiURL() {
  return `https://api.telegram.org/bot${this.getToken()}`;
}

getUpdates() {
     this.getAPI('getUpdates')
         .then(res => {
             this.storeUpdates(res.data);
             setTimeout(() => {
                 this.getUpdates();
             }, 1000);
         })
         .catch(err => {
             console.log('::: ERROR :::', err);
         });
 }

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Вы можете выбрать один из этих двух:

  1. используйте setInterval с getUpdates в качестве задачи. При этом, однако, вам нужно подумать о правильном времени, таким образом, чтобы getUpdates () завершилась до истечения интервала времени.

  2. используйте setTimeout как в разрешении, так и в отклонении обещания. Когда API возвращает данные, используйте немного более длительный период ожидания, чем при обнаружении ошибки. Это гарантирует, что API будет вызываться x mills после каждого успешного вызова и y mills после обнаружения ошибки

0 голосов
/ 21 июня 2020

Почему бы не использовать вместо него setInterval(), если все, что вам нужно, - это проверять наличие обновлений каждую секунду? Таким образом, выдача ошибки не нарушит ваш интервал до тех пор, пока вы обрабатываете ее правильно.

...