2016-04-19 9 views
0

例えばphpでは、5分のスリープ機能をループに入れて、ループバックよりも実行を一時停止することができました。データベースや他のインスタンスから新しいフェッチ結果を得ることができます。唯一の方法はjavascriptでできますタイムアウトを設定し、内部で同じ機能を呼び出すには、 ありがとうございます。javascriptのPHPスリープ機能のベストプラクティスは何ですか?

+0

私は間違っているとsleep()関数が私を修正するので、これはループを一時停止しません。 – jaylab

+0

シングルスレッドなので、JSを一時停止できません。これにより、ページ全体がフリーズする可能性があります。あなたはコードを関数に集約してJSに伝えることができます: "call me back"のようにx msでこの関数を呼び出します:[setTimeout](https://developer.mozilla.org/ja/docs/Web/API/WindowTimers/setTimeout)。そして、あなたはJSと言うことができます:私はこの関数を5分ごとに実行する必要があります(あなたに別のことを言わない限り)[setInterval](https://developer.mozilla.org/en/docs/Web/API/WindowTimers/setInterval) – Thomas

+0

実際の質問は、その機能が必要な理由です。どうやらあなたは問題を解決していて、なんらかの理由で 'sleep()'があなたを助けてくれると思われます(注意:PHPのスリープはCPUサイクルを無駄にするので非常に悪いです。 – Mjh

答えて

0

上記のコメントで指摘したように、javascriptはシングルスレッドなので、実行したいコードを独自の関数でラップしない限り、これはできません。

あなたは、コードの異なる部分は、例えば、一時停止サイクルに基づいて実行する段階何を追跡することにより、あなたはしかし、進捗ストレージシステムのいくつかの種類を作ることができる:

var stage = 0; 

setInterval(function() { 
    executeStage(++stage); // Iterate stage 
}, 300000); // 5 mins 

var executeStage = function(stageToExecute) { 

    // Put any code you want to execute at EVERY stage here 
    console.log('this code will execute no matter what stage is set'); 

    // Now execute code specific to just this stage 
    switch (stageToExecute) { 
    case 1: 
     // Put stage 1 code here 
     console.log('Stage 1 executes here'); 
     break; 

    case 2: 
     // Put stage 2 code here 
     console.log('Stage 2 executes here'); 
     break; 

    // And so on 
    } 
} 

を上記だけですアイデアは、実際にはあなたの質問に非常にはっきりと説明されていないユースケースに依存します。また、最初のステージは、setIntervalで5分が経過するまで実行されないので、ステージを実行して5分待っている場合は、setIntervalコールの外にexecuteStage(++stage)へのコールを追加する必要があります。

関連する問題