2017-08-21 5 views
-3

私はいくつかの遅延後にタイマを再起動しようとしています。私はどのようにコールバックを作るのですか? (それは、関数Aを作成し、このコードいくつかの遅延の後でタイマを呼び出す方法

を試してみてください...

var i = 0; 
 
var createInterval = setInterval(function() { 
 
    $('#counter').html(++i); 
 

 
    //delay 
 
    setTimeout(function() { 
 
     return createInterval; 
 
    }, 10000); 
 

 
    if (i === 10) { 
 
     clearInterval(createInterval); 
 
    } 
 
}, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="counter"></div>

JS FIDDLE

+0

'createInterval'が関数である場合、あなたはそれを呼び出すために必要があるだろう、' createInterval() 'を正確にタイムアウトのコールバックからの戻り値が起こっていると思います –

+0

?また、 'createInterval'は単なる整数です。インターバルコールバックからタイムアウトを引き出し、タイムアウトのコールバック関数内にインターバルを作成します。 – Teemu

+0

質問を編集した後の答えは次のとおりです。インターバルがクリアされると消えてしまいます。再起動できません。あなたは新しい間隔を作る必要があります。関数を宣言し、間隔を作成するときに関数をコールバックとして参照します。 – Teemu

答えて

0

は、あなたの貴重な時間ありがとうございました。たぶん私は私の質問で十分ではなかった。

<div id="counter"></div> 

(function product_timer() { 
    var product_interval = 20, //20 seconds 
    delay = 10000; //10 seconds 
    //product interval 
    productInterval = setInterval(function() { 
    product_interval--; 
    $('#counter').html(product_interval+'s'); 
    if (product_interval === 0) { 
     $('#counter').html('Please Wait...'); 
     clearInterval(productInterval); 
     setTimeout(function() { 
     //delay and callback product timer 
     product_timer(); 
     }, delay); // 10 s 
    } 
    }, 1000); 
}()); 

FIDDLE

0

var i = 0; 
 

 
    function A() { 
 
     $('#counter').html(++i); 
 
    
 
     if (i === 10) { 
 
      clearInterval(createInterval); 
 
     } 
 
     
 
     //delay 
 
     setTimeout(function() { 
 
      A(); 
 
     }, 10000); 
 
    } 
 
    var createInterval = setInterval(A, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="counter">0</div>

を助けてください)は、特定の間隔で呼び出され、内部ではsetTimeout()で再帰的に呼び出されます。

0

var i = 0; 
 
setTimeout(myFunction, 1000); 
 
function myFunction() { 
 
    $('#counter').html(++i); 
 
    if (i < 10) { 
 
     setTimeout(myFunction, 10000); 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="counter"></div>

2本使用setTimeout。しばらくしてから同じ関数を呼び出します。

0

setTimeoutは非同期関数ですが、コードをブロックすることはありませんが、提供した遅延の後に関数を実行します。 setIntervalは、clearIntervalを使用してコードを停止するまで、Xミリ秒ごとにコードを実行します。いくつかの遅延が最初のタイマーをインクリメントしてからX秒後にそれを呼び出すとのsetIntervalは、すべてのY秒とてclearInterval後に実行されるための関数を作成した後

var i = 0; 
 

 
function increment() { 
 
    $('#counter').html(++i); 
 
    
 
    if (i === 10) { 
 
    clearInterval(interval); 
 
    } 
 
} 
 

 
var interval = setInterval(increment, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="counter">0</div>

0

は、タイマーを起動するには:以下の私の例を参照してください。 https://www.w3schools.com/jsref/met_win_clearinterval.asp

チェックの上の文の上に示して、このコードをdemonstartedとしてのsetIntervalによって設定されたタイマーをクリアする -

var i = 0; 
 
var createInterval = function() { 
 
    var timer = setInterval(function() { 
 
    $('#counter').html(++i); 
 
    if (i === 10) { 
 
     $('#text').html('Stop'); 
 
     clearInterval(timer); 
 
    } 
 
    }, 1000); 
 
} 
 

 
$('#text').html('Waiting... for 5 sec to start timer'); 
 

 
setTimeout(function() { 
 
    $('#text').html('Start...'); 
 
    createInterval(); 
 
}, 5000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="text"></div> 
 
<div id="counter"></div>

希望、これはあなたのために働く.. :) :)

関連する問題