2016-02-19 4 views
1

У меня есть интервал $, на котором выполняется ping-сервер, но иногда я хочу перейти к следующему обновлению сразу, поэтому я попробовал flush() с частотой обновления. Чтобы заставить следующий вызов. Это принесло бы дополнительную выгоду, если бы оба запроса не были в пути одновременно.

$interval.flush(refrsh_rate); 

Когда это работает он эту ошибку

TypeError: $interval.flush is not a function 

Существует не тонны документации на интервале, но это, кажется, в основном ссылаются из ngMock. Это касается модульного тестирования. Что я делаю не так? или есть лучший способ достичь этого? Заранее спасибо.

+0

Прочитайте документацию по интервалу $ - [AngularJS $ Service API Reference - Отмена] (https://docs.angularjs.org/api/ng/service/$interval#cancel). Он включает пример о том, как остановить и перезапустить операцию '$ interval'. – georgeawg

+0

Да, вы можете отменить его, но я хочу, чтобы интервал продолжал работать. Есть ли лучший способ сделать это, а затем отменить promis, запускающий функцию, и перезапустить ее? Я думаю, что это решение каким-либо образом приведет к условиям гонки. – JohnStone

+0

Я бы доверял индивидуальным обещаниям от '$ timeout' отменить правильно. Поскольку '$ interval' не связывает обещания, я бы не стал доверять ему для того, чтобы выпустить XHR. – georgeawg

ответ

0

Функция промывки предназначена только для модульного тестирования. Если вы хотите принудительно выполнить задачу по интервалу, вам нужно остановить, выполнить задачу и затем начать заново.

Смежные вопросы