2016-12-02 10 views
0

繰り返しタスクにsetInterval関数を使用します。ここで私のautoUpdate関数は一度動作します。setInterval関数は1回だけ動作します

var intervalId; 

function autoUpdate() { 
    intervalId = setInterval(updateFile(fileId, 'root', document.getElementById('editor').value), 10000); 
} 

ここは私のstopAutoUpdate機能です。

function stopAutoUpdate() { 
    clearInterval(intervalId); 
} 

このコードで何が問題になっていますか? 〜

編集=タイトルを編集しました。ごめんなさい。あなたは正しくインターバル機能を設定する必要が

+0

は - あなたはそれが一度だけ実行されることを意味するのですか?だから、それは動作しない 'setInterval'ですか? 'clearInterval'ではなく? – Quentin

+0

タイトルは赤ちゃんです、複製は正しいです。 – zzzzBov

+0

@Atti機能を実行しない - こちらを参照してください - > https://jsfiddle.net/myt05mad/ – hack3rfx

答えて

3

function autoUpdate() { 
    intervalId = setInterval(function(){ 
     updateFile(fileId, 'root', document.getElementById('editor').value) 
    }, 10000); 
} 

を何をやっているが、実際に関数を呼び出すに一度の代わりにそれを渡しています。 clearInterval自体が正しいように見えます。

+0

@Lainが何を言っているのかを明確にするために、各間隔で何を実行するべきかを設定するのではなく、updateFile関数を呼び出しています。編集:彼はそれ以降自分自身をクリアして私を無視する:) – Pabs123

+0

@Lain男は中立的ではありません。 –

+0

@Mike C:歴史的に見て、それはありました。昔は人が "人類"のような表現で見ることができる男であった。 – Lain

0

問題は、それがfunction definitionを受信しますが、あなたはclearIntervalと間違って何もないfunction execution

0

の結果を与え、あなたが設定setIntervalのparamです。 setIntervalが間違っていて、範囲内にIDがない可能性があります。どのように動作するかの簡単な例を次に示します。 "一回作品"

// Make sure the ID is declared somewhere that both functions 
 
// can access it 
 
var intervalID; 
 
var calls = 0; 
 

 
function displayStuff(a, b, c) { 
 
    console.log(a, b, c); 
 
    calls++; 
 
    
 
    if (calls >= 10) { 
 
    stopAutoUpdate(); 
 
    } 
 
} 
 

 
function autoUpdate() { 
 
    intervalID = setInterval(function() { 
 
    // Notice how I'm wrapping the call in an anonymous function 
 
    // without this, it will just call the function once, not repeat it 
 
    displayStuff('Auto:', intervalID, calls); 
 
    }, 800); 
 
} 
 

 
function stopAutoUpdate() { 
 
    clearInterval(intervalID); 
 
    console.log('Done'); 
 
} 
 

 
// Start the interval 
 
autoUpdate();

関連する問題