Ionic: Запланировать вызов функции - PullRequest
0 голосов
/ 04 сентября 2018

Мне нужно иметь возможность планировать выполнение функции на определенную дату и время. Мой текущий проект утверждает, что у меня есть приложение, работающее на планшете 24/7. В конкретную дату и время (например: 2018-09-01 14: 00.00) мне нужно выполнить эту функцию один раз.

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

Вы можете использовать rxjs Observable.timer(). Пример ниже.

//What time is it now?
let now = new Date();

//Get timer fire date (Or use a date string like this>> '2018-09-04T08:26:00');
let timeDateString = new Date(now.getTime() + 60000).toString();
let timerDate = new Date(timeDateString);

//Get diff
let timerFireMillis = timerDate.valueOf() - now.valueOf();

//Prove it
console.log(`now: ${now}`);
console.log(`timer: ${timerDate}`);
console.log(`diff: ${timerFireMillis} millis`);

//Fire the timer with the diff calculated above
//May want to keep track of this fella, and unsubscribe in certain cases
const mySubscription = rxjs.timer(timerFireMillis).subscribe(() => {
  console.log(`I just fired at ${new Date()}`);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.2.2/rxjs.umd.js"></script>
0 голосов
/ 04 сентября 2018

Если вы используете Ionic 2/3, вы можете использовать локальные уведомления. Запланируйте с ним событие, а затем используйте метод .on (eventName), который может вызвать обратный вызов и т. Д.

Смотрите здесь: https://ionicframework.com/docs/native/local-notifications/

0 голосов
/ 04 сентября 2018

Это немного зависит от вашего варианта использования. Я вижу 2 разных способа сделать это:

  1. Запланируйте время выполнения функции, используя setTimeout()
  2. Добавьте setInterval(), который выполняется каждую секунду или минуту, и проверьте, есть ли что-либо, что должно быть выполнено.

Я бы предпочел первый способ, если у вас есть только одна или несколько вещей, которые нужно выполнить. Вы можете просто вычислить разницу во времени (в миллисекундах) между текущим моментом и временем, когда функция должна быть выполнена, а затем вызвать setTimeout() с этим временем.

Если вы хотите запланировать много функций в течение дня, вы можете использовать решение 2 и выполнить все функции, которые должны были произойти в течение последних x секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...