2011-01-06 8 views
1

特定の日付と時間に機能を開始することはできますか?どうやって?javascriptでアラームを発することはできますか?

私はsetTimeoutについて考えましたが、設定できる最大時間は何ですか?ところで

--update

、それはデスクトップアプリケーションのためです。

+1

私は、ブラウザを閉じたユーザー以外のsetTimeout' '上の任意の制限があるとは思いません。 – JCOC611

答えて

2

になるので、それは遅延を保存するために32ビットのintを使用しています - あなたは、あなたのアプリケーションが終了していないことを確認することができた場合私はこれが動作しないために理由を見ていないが、多くの人々は、あなたが持っているタイマーベースのソリューションを称揚

window.setTimeout(function() { soundAlarm() }, 
      alarmDate.getTime() - new Date().getTime()); 

:、その後、ちょうどあなたのアラームがオフに行くと、このような何かを行う必要があるときのDateオブジェクトを取得短期タイマータイマー設定された時間までcks。これは、タイマ機能がクロックまたはカウントダウンも更新できるという利点があります。私はこのように、このパターンを書くのが好き:

(function(targetDate) { 
    if (targetDate.getTime() <= new Date().getTime()) { 
     soundAlarm(); 
     return; 
    } 

    // maybe update a time display here? 
    window.setTimeout(arguments.callee,1000,targetDate); // tick every second 
})(alarmDate); 

これは、基本的には、時間が経過していないかどうかをチェックするためのアラーム、再呼び出し自体秒ごとに音に目標期日で呼び出されたときに、その関数です。

+0

このページは私の実際の答えです:http://www.webdeveloper.com/forum/showthread.php?t=173924 –

+0

それは似たような考えですが、私はその男のオリジナルの問題は彼が毎回ページをリフレッシュしていたと思いますあなたが何か他のことをしていなくても、ページがアンロードされるときに彼はタイマーをセットしなくても、15分ほどかかります。ページがアンロードされないことを確認した場合(デスクトップアプリケーションには意味があります)、その問題はありません。でも、あなたが見つけたページの回答に似た解決策の回答を編集してみてください。 – Guss

+1

は毎秒それ自身を再呼び出しします:これは束縛なしにスタックを増加させ、危険なメモリリークです。代わりに 'setInterval()'を使わないのはなぜですか? – Roland

1
setTimeout(functionToCall,delayToWait) 

Why does setTimeout() "break" for large millisecond delay values?で述べたように許容される最大値は、私はJCOC611に同意2147483647

+0

あなたの構文は少し壊れています:このように 'functionToCall()'を使うと 'setTimeout()'を実行する前に実際に関数を実行し、 'setTimeout()'はその戻り値をタイムアウトは終了します。 – Guss

+0

@Guss:はい。 ; D括弧を誤って追加しました。 –

+0

素敵な情報です、それは約596時間でしょう! – JCOC611

0

これにはサーバーコンポーネントはありますか?あなたはsetIntervalを使ってajax経由で定期的にサーバサイドを呼び出すことができます。その後、日付オブジェクトを取り戻すことができます。そして、最後にはあなたの "アラーム"を引き起こすことができます。

1

実際のアラームトリガアラームを追跡する定期的な機能です。 setTimeoutを使用して、アラームの保存時間を1分ごとに確認します。その時間をDB、ファイル、またはサーバーに保存します。

1

setTimeout()には最大値がありますか?

http://www.highdots.com/forums/javascript/settimeout-ecma-166425.html

それはsetTimeoutメソッドが ECMA標準でカバーされていないことをあなたを驚かず、またW3C標準によって ことがあります。 Web標準にはいくつかの穴があります。これは です。私はこれを解決するためにWHAT ワーキンググループを探しています。 http://www.whatwg.org/specs/web-apps/current-work/

は、ブラウザのMTBF よりもはるかに大きい何か にタイムアウト値を設定する に問題があるように思えません参照してください。つまり、 タイムアウトが発生しないことを意味します。

http://javascript.crockford.com/ は-Douglas Crockfordは他の人が述べたように

は、この状況を処理するための方法ではありません。 setTimeoutを使用して日付オブジェクトをチェックし、適切なタイミングでイベントを発生させます。いくつかのコードは以下にリンクされています。

http://www.w3schools.com/js/tryit.asp?filename=tryjs_timing_clock

関連する問題