制作一个简单的javascript计时器

制作一个简单的javascript计时器,javascript,Javascript,嘿,我正在尝试为discord APIjavascript上的一个应用程序制作一个20秒的小计时器……我在网上得到了很多答案,但没有一个被证明是成功的。有人能帮我吗?这是我最初编写的代码 setTimeout(function(){ var af = 0; while(af<21){ af = af+1; if(af == 20){ break; } console.log(af);} }, 1000); message.reply("ch

嘿,我正在尝试为discord APIjavascript上的一个应用程序制作一个20秒的小计时器……我在网上得到了很多答案,但没有一个被证明是成功的。有人能帮我吗?这是我最初编写的代码

            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…它在不到一秒钟内变成了20。。i、 e设置超时没有被跟踪..你能帮我吗?

如果你想每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);
setTimeout(function() {
  message.reply("check the console");
}, 20000);
所以我想你应该这样做:

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() {
  //code will run after 30 seconds  
}, 30000);
setTimeout(function() {
  message.reply("check the console");
}, 20000);

你的问题不清楚。 您希望af每秒减少还是增加1

如果希望af从20开始到0结束每秒钟减少1

 var af = 20; 

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

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

这将每秒调用一次函数。

您似乎对setTimeout方法的工作原理以及函数执行的工作原理有误解。运行以下代码时,您可以:

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

i、 e没有跟踪setTimeout-是的,跟踪了。首先是一秒钟的延迟,然后您的函数运行一次,没有进一步的延迟-这正是setTimeout的目的。你读过什么书吗?为什么你的问题有数组标签?是的,我读了一些JS定时器文档…但它们在我的代码中不起作用..倒计时从20到19发生过一次,然后就停止了..也为数组标签感到抱歉..它是错误的,我现在删除了..但是你能帮我处理这段代码吗?比如,我应该做什么样的更改才能使代码按我希望的方式运行?您应该格式化代码,使其可读,并将其作为可运行的代码段发布。它不应该依赖于外部库,尤其是那些没有提供的库。非常感谢,先生。这一个非常有用。var af现在每一秒都会减少一次。谢谢!!!很高兴我能帮忙。请接受答案。是的!!成功了…谢谢你!如果这对您有效,请将其标记为与答案相同,这有助于其他人知道问题是否已被回答。哦,我明白了…因此setTimeout在指定时间后调用该函数,而setInterval每x秒继续执行该函数,其中x是指定时间