Javascript JS-为什么await不在课堂上工作

Javascript JS-为什么await不在课堂上工作,javascript,asynchronous,Javascript,Asynchronous,我需要在类的函数中等待一段时间。我试着调整答案: const sleep=ms=>newpromise(res=>setTimeout(res,ms)); K类{ 运行(n){ (异步函数(){ document.body.textContent=n; 等待睡眠(1000); })(); } } var v=新的K(); for(设n=0;nnewpromise(res=>setTimeout(res,ms)); (异步函数(){ for(设n=0;nnewpromise(res=>setTim

我需要在类的函数中等待一段时间。我试着调整答案:

const sleep=ms=>newpromise(res=>setTimeout(res,ms));
K类{
运行(n){
(异步函数(){
document.body.textContent=n;
等待睡眠(1000);
})();
}
}
var v=新的K();
for(设n=0;n<4;n++){
v、 run(n);
}
但计数立即提示为3。如果我跑 我认为柜台除外:

const sleep = ms => new Promise(res => setTimeout(res, ms));

 (async function() {
   for(let n = 0; n < 4; n++) {
     document.body.textContent = n;
     await sleep(1000);
   }
})();
const sleep=ms=>newpromise(res=>setTimeout(res,ms));
(异步函数(){
for(设n=0;n<4;n++){
document.body.textContent=n;
等待睡眠(1000);
}
})();
我做错了什么

[更新]一些背景:在我的家乡,一个名为JavaKara的非常古老的程序非常流行,它可以帮助高中学生学习如何编码:


了解瓢虫如何移动对理解和发现错误非常有帮助。因此,我尝试在瓢虫的每个步骤之后等待一段时间。

在您的第一个示例中,您正在创建4个互不相关的
异步
函数,因此它们都不必等待其他函数


在第二个示例中,您正在创建1个
async
函数,其中
await
表达式导致
async
函数执行暂停,直到承诺
sleep
实现为止。

在第一个示例中,您正在创建4个彼此不相关的
async
函数,所以他们都不必等待另一个

在第二个示例中,您正在创建1个
async
函数,其中
await
表达式会导致
async
函数执行暂停,直到承诺
sleep
完成。

如上所述,您正在创建4个异步任务,其中每个任务都会立即运行。为了延迟下一个任务,您需要在循环中使用
wait
,并使
run
函数返回一个承诺,如下所示:

const sleep = ms => new Promise(res => setTimeout(res, ms));

class K {
  async run(n) {
    document.body.textContent = n;
    await sleep(1000);
  }
}

(async function() {
  var v = new K();
  for (let n = 0; n < 4; n++) {
    await v.run(n);
  }
})();
const sleep=ms=>newpromise(res=>setTimeout(res,ms));
K类{
异步运行(n){
document.body.textContent=n;
等待睡眠(1000);
}
}
(异步函数(){
var v=新的K();
for(设n=0;n<4;n++){
等待v.运行(n);
}
})();
如前所述,您正在创建4个异步任务,其中每个任务都会立即运行。为了延迟下一个任务,您需要在循环中使用
wait
,并使
run
函数返回一个承诺,如下所示:

const sleep = ms => new Promise(res => setTimeout(res, ms));

class K {
  async run(n) {
    document.body.textContent = n;
    await sleep(1000);
  }
}

(async function() {
  var v = new K();
  for (let n = 0; n < 4; n++) {
    await v.run(n);
  }
})();
const sleep=ms=>newpromise(res=>setTimeout(res,ms));
K类{
异步运行(n){
document.body.textContent=n;
等待睡眠(1000);
}
}
(异步函数(){
var v=新的K();
for(设n=0;n<4;n++){
等待v.运行(n);
}
})();

谢谢您的解释!你知道我是如何实现在类中等待的吗?这与使用类无关,你可以将第一个示例更改为,你最终会看到相同的结果。您可以在异步函数中移动循环,或者使用“谢谢您的解释”!你知道我是如何实现在类中等待的吗?这与使用类无关,你可以将第一个示例更改为,你最终会看到相同的结果。你能做的就是在你的异步函数中移动循环,或者使用它!你看到我只需要写“v.run(n);”而不写“wait v.run(n);”的方法了吗?原因是我想用我的程序来帮助我的学生在编程中迈出第一步。因此,v.run比“等待v.run”更容易理解。那太棒了!你看到我只需要写“v.run(n)”的方法了吗;“而不是”等待v.run(n);原因是我想用我的程序来帮助我的学生在编程中迈出第一步。所以v.run比“wait v.run”更容易理解。