2017-05-05 13 views
0

ちょっと、私はdiscord API(javascript)上のアプリケーションのための小さな20秒のタイマーを作ろうとしています...私は多くの答えをオンラインで得たが、どれも成功したとは思われませんでした。誰でも助けてくれますか? setTimeout()はfollowed..can取得していない、すなわち、これは私がもともとシンプルなjavascriptタイマーを作成する

  setTimeout(function(){ var af = 0; while(af<21){ af = af+1; if(af == 20){ break; } console.log(af);} }, 1000); 
      message.reply("check the console"); // Part of the discord.js library...nothing to do with the timer 

を書いたコードですが、VaRのAFは1秒ごとに減少させなかった...それは... 1秒未満で20になりました私を助けてくれる?

+0

:次のコードを考えてみましょう。最初に1秒間の遅延があった場合、あなたの関数はそれ以上の遅延なしに1回実行されました。これはまさに 'setTimeout()'が意図したものです。あなたは[JSタイマーについてのドキュメント](https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Timers)を読んだことがありますか?あなたの質問に「配列」タグがあるのはなぜですか? – nnnnnn

+0

はい私はいくつかのJSタイマーの文書を読んだ...しかし、彼らは私のコードで仕事をしなかった..カウントダウンは20から19に一度起こって、そしてちょうど停止....また、その配列タグを残念。それは間違っていた私は今それを削除.......しかし、あなたはこのコードで私を助けることができますか?どのような変更を私はそれが私がそれをしたい方法をcuntdownにする必要がありますか? –

+0

コードを読み取り可能にして、実行可能なスニペットとして投稿する必要があります。外部ライブラリ、特に提供されていないライブラリに依存してはいけません。 – RobG

答えて

1

あなたの質問は明らかではありません。 afを1秒ごとに1ずつ減少または増加しますか?

あなたは0

var af = 20; 

a = setInterval(function(){ 
console.log("Hi"); 
af = af-1; 

if(af == 0){ 
    clearInterval(a); 
} 
console.log(af); 
}, 1000); 

に毎秒20からの開始と終了の1に減少することが、AFをしたい場合はこれが毎秒関数を呼び出します。

+0

ありがとうございました。この1つはチャームのように働いていました.. var afは1秒ごとに減少します。 –

+0

うれしい私は助けることができます。答えを受け入れてください。 –

0

x秒ごとに何かしたい場合は、setIntervalを使用できます。

setInterval(function(){ 
    //code goes here that will be run every 1 seconds.  
}, 1000); 

あなたは一度何かをしたいが遅延して、あなたがsetTimeoutを

setTimeout(function() { 
    //code will run after 30 seconds 
}, 30000); 

を使用することができますだから私はあなたがこのような何かをしたいと思います場合:

var af = 20; 
function myTimer() { 
    if(af === 0) { 
    message.reply("check the console"); 
    clearInterval(timer); 
    } else { 
    af = af - 1; 
    console.log(af); 
    } 
} 

var timer = setInterval(function(){ myTimer() }, 1000); 

それとも、setTimeoutメソッドを使用します

setTimeout(function() { 
    message.reply("check the console"); 
}, 20000); 
+0

はい!それは働いた...ありがとう! –

+0

これがあなたの答えと同じ印をつけていれば、これは質問にすでに答えられていれば、他人に知らせるのに役立ちます。 – NBaua

0
<script Src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

<div id="random_no_container"> 
Hello. Here you can see random numbers after every 60 sec 

<script> 
window.setInterval(function(){ 
      /// U CAN DO YOUR CODE HERE 
      var ran=Math.random(); 
      jQuery('#random_no_container').html(ran); 
      }, 3000); 
</script> 
0

setTimeoutメソッドがどのように機能するのか、そして関数の実行方法を誤解しているようです。あなたが持っている次のコードを実行:

setTimeout(function() { 
    var af = 0; 
    while(af<21){ 
    af = af+1; 
    if(af == 20){ break;} 
    console.log(af); 
    } 
}, 1000); 

setTimeout1000ミリ秒後に関数を呼び出します。その後、その実行が完了し、一度だけ実行されます。さらに、関数自体が何をしているのかを考慮する必要があります。 1000 msの後に呼び出されると、af0に設定し、その後20にループしてから終了します。機能が完了した後には、afは存在しなくなりました。 代わりに、afを変更する関数の範囲外に宣言し、反復ごとに1回のみ変更します。一般的な方法は、関数内にsetTimeoutを配置し、停止条件が満たされるまで反復的に呼び出します。はい、それはやった - * * "すなわちのsetTimeout()が続きませんでした"

var af = 0; 
 
    function delayIncrementAF() { 
 
     if(af == 20){return;} 
 
     setTimeout(function() { 
 
      af = af+1; 
 
      console.log(af); 
 
      delayIncrementAF(); 
 
     }, 1000); 
 
    } 
 
    delayIncrementAF();

+0

ああ、そうですね... setTimeout()は、setInterval()がx秒ごとに関数を実行している間に、指定された時間後に関数を呼び出します。ここでxは、 –

関連する問題