javascript - 在多个 settimeout 上使用 Async/Await

标签 javascript async-await

为了理解 async/await,我试图在 settimeout 运行并到期后显示控制台消息。如何在下面修复我的代码?我有 5 个 settimeout 函数,每个函数都应该在完成后显示各自的消息。

function t1(){
    setTimeout(() => {
    console.log("1")
    }, 1000);
}

function t2(){
    setTimeout(() => {
    console.log("2")
    }, 2000);
}

function t3(){
    setTimeout(() => {
    console.log("3")
    }, 3000);
}

function t4(){
    setTimeout(() => {
    console.log("4")
    }, 4000);
}

function t5(){
    setTimeout(() => {
    console.log("5")
    }, 5000);
}

async function main(){
    await t1();
    console.log("1sec done");
    await t2();
    console.log("2sec done");
    await t3();
    console.log("3sec done");
    await t4();
    console.log("4sec done");
    await t5();
    console.log("Yay! I am all done");
}
main();

最佳答案

您应该使用 Promises

function t1(){
    return new Promise(function(resolve, reject) {
      setTimeout(() => {
        console.log("1");
        resolve();
      }, 1000);
   });
}

function t2(){
    return new Promise(function(resolve, reject) {
      setTimeout(() => {
        console.log("2");
        resolve();
      }, 1000);
   });
}

function t3(){
    return new Promise(function(resolve, reject) {
      setTimeout(() => {
        console.log("3");
        resolve();
      }, 1000);
   });
}

function t4(){
    return new Promise(function(resolve, reject) {
      setTimeout(() => {
        console.log("4");
        resolve();
      }, 1000);
   });
}

function t5(){
    return new Promise(function(resolve, reject) {
      setTimeout(() => {
        console.log("5");
        resolve();
      }, 1000);
   });
}

async function main(){
    await t1();
    console.log("1sec done");
    await t2();
    console.log("2sec done");
    await t3();
    console.log("3sec done");
    await t4();
    console.log("4sec done");
    await t5();
    console.log("Yay! I am all done");
}
main();

关于javascript - 在多个 settimeout 上使用 Async/Await,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55256133/

相关文章:

c# - 为什么异步等待任务中的同步代码比异步代码慢得多

c# - 任务完成后,连接正在关闭

javascript - 使用 jquery 动态加载内容不起作用

javascript - 在Dygraphs的图例中,我们可以先显示Y值,然后显示X值吗?

javascript - Summernote 字体系列和颜色不起作用

c# - 为什么 Task.Delay 在这种情况下不起作用

c# - 任务异步 Controller 方法未命中

c# - 如何在 Task<int> 列表之间插入延迟?

javascript - 如何检查变量是否已更改以及它是否大于存储它

javascript - Angular : Mixing provider and custom service in module's config/run