Ionic:安排函数调用

时间:2018-09-04 08:13:24

标签: ionic3

我需要能够安排在特定日期和时间执行功能。我当前的项目表明我有一个应用程序在24/7平板电脑上运行。在特定的日期和时间(例如:2018-09-01 14:00.00),我需要执行一次此功能。

3 个答案:

答案 0 :(得分:0)

这取决于您的用例。我看到了两种不同的方法:

  1. 使用setTimeout()安排执行功能的时间
  2. 添加一个setInterval(),每秒钟或每分钟执行一次,并检查是否有任何要执行的事情。

如果您只需要执行一个或很少的事情,我会首选第一种方法。您可以简单地计算从现在到应该执行该功能之间的时间差(以毫秒为单位),然后在那个时间调用setTimeout()

如果要在一天中安排许多功能,则可能要使用解决方案2并执行在过去的x秒内应该发生的所有功能。

答案 1 :(得分:0)

您可以使用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>

答案 2 :(得分:0)

如果您使用的是Ionic 2/3,则可以利用本地通知。安排事件,然后利用.on(eventName)方法触发回调等。

请参见此处:https://ionicframework.com/docs/native/local-notifications/