2017-05-04 2 views
0

アラームクロックを角度2で作成しようとしていますが、アラームがトリガーされるのに必要な時間はすべてミリ秒ですが、どのようにするのですか?アレイを持ち、アラームをトリガーするサービスを作成する必要があります

ここに私のサービスファイルがあります。

import { Injectable } from '@angular/core'; 


     @Injectable() 
     export class AlarmService { 
      constructor() {} 

      setUpAlarms(time){ 
      var all = JSON.parse(localStorage.getItem('user')); 
       for(var i =0; i < all.length; i++){ 
       var hours = all[i]['hours']; 
       var eventStartTime = new Date(); 
       var eventEndTime = new Date(hours.replace('T',' ').replace('-','/')); 
       var duration = eventEndTime.valueOf() - eventStartTime.valueOf();   
       console.log(duration); 
       } 

      console.log("CAME HERE"); 
       return true; 

      } 
} 

これはコンポーネントTSです。

ngOnInit() { 
    let time = new Date().getTime() 
    this.alarmService.setUpAlarms(time); 
} 

どうすればよいですか?どんな助けでも大歓迎です。

答えて

0

これを正しく理解していれば、x分のミリ秒単位でアラームを呼び出す必要があります。あなたはObservable.intervalを使用してこの操作を行うことができます。

import { Observable } from 'rxjs'; 

    callAlarmIn(milliseconds) { 
    Observable 
     .interval(1000) 
     .take(milliseconds/1000) 
     .finally(() => { 
     console.log('ring ring ring!'); 
     }) 
     .subscribe(); 
    } 

これは、毎秒1時間をチェックし、あなたが通過しているに渡されたミリ秒後、最終的には()コールバックを実行します。 Observableは非常に強力で、Observable.intervalでもっと多くのことができます。

観測者にサブスクライバが存在するまでは、間隔が決して開始されないため、サブスクライブは追加されません。ここで.subscribe()を省略して、別のコンポーネントがサブスクライブする可能性のあるオブザーバブルを返すことができます。簡単にするため、私はそれを残しました。どのように動作するかを調べることを強くお勧めします。

はまた、より複雑なのです。このカウントダウンタイマーの質問があります:@ Eeks33の答えは良いですがTime CountDown in angular 2が、ここでは素敵な甘い、観察可能なフリー版です

0

export default class { 
    async soundAlarmIn(milliseconds: number) { 
    await delay(milliseconds); 
    console.log('Wake up!!!'); 
    } 
} 

function delay(milliseconds: number) { 
    return new Promise(resolve => { 
    setTimeout(resolve, milliseconds); 
    }); 
} 
関連する問題