2017-10-15 3 views
0

JSの特定の日付に関数を実行するのに最適な方法を知りたいだけです。私の最初のアイデアは、私が通知を表示するはずの分になっている場合は、毎分チェックするWebワーカーでループを実行することですが、よりクリーンな方法があるのだろうかと思います。JavaScriptで指定された日時にコードを実行する最良の方法

PS:cordova plugin local-notificationsを使用していて、私は 'at'引数を使用しているため、実際には何の答えも必要ありません。この質問は純粋な好奇心/学習のためのものです。

EDIT: あなたのいくつかは疑問が広すぎる見つけ、実際には(私は「通知を送信するためにどのように?」求めていないよ)広すぎる、広範ではありません、それはすべてのポイントですが、私が探していますここでは豊富な答えを持つ一般的なアルゴリズム/説明のために、あらゆるプラットフォームの説明が歓迎され、毎回問題の違いを把握するのに役立ちます。

+1

これはどこで実行されますか?ノード?モバイルアプリ? – diegoaguilar

+3

私は目標時間までどれくらい時間をかけてから、 'setTimeout'を使うのが最善の方法だろうと思います。 – Shadow

+0

どこでも、それは本当に純粋な好奇心です。あなたが私に両方の説明を与えることができるなら、それは完璧だろう! –

答えて

1

これは本当にあなたのアプリケーションがどこに生きるかによって異なります。ブラウザ、ノードなどにある場合

最も簡単で壊れやすいソリューションは、現在と実行時間の差をミリ秒単位で計算することです。その後、差があるのはsetTimeout()です。しかし、ブラウザが更新された場合、同じことを再度実行しない限り、タイムアウトは消えてしまいます。

しかし、アプリケーションの構造や性質について詳しく知りませんが、それ以上具体的になることは困難です。

+0

興味深い!マジックがWebワーカーで実行されている場合、ブラウザのリフレッシュは問題にならないはずですか? –

+0

あなたはこの種のことにウェブワーカーを使用することから利益を得ることはできません。ブラウザが更新されると、ワーカーは殺されます。彼らは存続しません。フルプルーフスケジューラが必要な場合は、アプリケーションが通知を受け取るためにWebSocket経由でポーリングまたは接続できるバックエンドサービスが必要です。 – Geuis

+0

これは理にかなっているので、mecanicをチェックする時間はサーバー側にあり、リアルタイムメッセージをクライアントに送信する必要があると考えられます。これにより通知が表示されます。特にクロスプラットフォームアプリケーションのための良いソリューションのようです! –

関連する問題