async和await的用法




  function fn(){
      return "aa";      
  }
  console.log(fn())
// 如果直接写个函数return一个值,那么打印的肯定就是aa

 

    async function fn(){
        return "aa";
    }
    console.log(fn())
// 使用async就是在函数前面加一个async,这样打印出来的就是一个promise对象,而不是之前那个具体的值

 

 

复制代码
    async function fn(){
        return "aa";
    }
    console.log(fn())

    fn().then(function(data){
        console.log(data)  // aa
    });
// 如果想要获取fn()的值,就要用then()方法去获取
复制代码

 

 

awiat必须在使用async的情况下才能使用,它的作用是阻断主函数的执行,等待异步执行的结果返回后才会向下继续执行。

复制代码
    function fn(){
        return new Promise((resolve)=>{
            setTimeout(()=>{
                console.log(1111)
                resolve();
            },2000);
        });
    }

    async function fn1(){
        await fn();
        setTimeout(()=>{
            console.log(2222);
        },1000);
    }
    fn1();
// 执行结果:2秒后打印1111(因为await的阻断作用,它会先执行fn函数),再过1秒打印2222(执行完fn函数后,fn函数要有reslove()才能继续向下执行)。
复制代码

 

多个异步同时执行

复制代码
    function fn(){
        return new Promise((resolve)=>{
            setTimeout(()=>{
                console.log(1111)
                resolve();
            },3000);
        });
    }
    function fn1(){
        return new Promise((resolve)=>{
            setTimeout(()=>{
                console.log(2222)
                resolve()
            },1000);
        });
    }
    function fn2(){
        return new Promise((resolve)=>{
            setTimeout(() => {
                console.log(3333)
                resolve()  
            },1000);
        });
    }

    async function fn3(){
        await fn();
        await fn1();
        await fn2();
        console.log(4444)
    }
    fn3();
// 执行结果:3秒后打印1111(因为定时器设置为3秒),再过1秒打印2222(受await阻断影响,必须要在fn()执行完后才能执行,同时如果fn()没有返回结果,就是说没有reslove()的话,那么下面的代码将不会执行),
// 再过1秒打印3333和4444(打印4444是瞬间执行,如果fn2()没有reslove(),则不会打印4444)。
复制代码

 

 

 

posted @   吴小明-  阅读(539)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示