2017-12-26 17 views
0

カレンダーのアラートを使用する場合は、毎分(毎分0秒)、毎分15分(0分0分)で1分ごとに発信するObservableを作成する必要があります、15分、30分、45分など)rxjsを使用した分のストリームの先頭

タイマーサービスチェック毎分と警告(アラームなどを作成します)

私は次のことを試してみました:

//get 59th second of this minute and start an observable timer 
var date : Date = moment().endOf('minute').toDate(); 
const source = Observable.timer(date, 60000); 

source.subscribe(val => console.log("New Minute: " + moment().format())); 

この作品との発します1分ごとのトップですが、秒はドリフトし、1時間以内には47秒。

これを実行する最善の方法は、毎秒放出し、秒が0であるかどうかを確認することですが、Observableを使用してそれを行う方法がわかりません。

編集:これはAngular 2アプリです。

+0

シンプルなcronの代わりに加入者/オブザーバーを選んだのはなぜですか? –

+0

申し訳ありませんが、これは角度2のアプリケーションです。 – mobius

+0

私は、基本的には30分ごとにオフになるタイマーになるようなラウンドアバウト方法を使用する理由について興味があります。 –

答えて

0

少し混雑しているようですが、observable.timerを1秒に1回実行してからseconds === 0にフィルタをかけることができます。このように:

const source = Rx.Observable.timer(1000, 1000) 
       .map(x => moment()) 
       .filter(mom => mom.seconds() === 0); 

    source.subscribe(m => console.log(m)); 
+1

恐ろしい!ありがとう。 – mobius

関連する問題