欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

async与await以及宏微任务

程序员文章站 2022-03-10 18:26:56
async与await以及宏微任务一个正在努力爱好运动的程序猿座右铭:越努力越幸运,越运动越健康,热爱编程,热爱运动。文章目录async与await以及宏微任务一、async与await二、宏微任务一、async与awaitasync function f(){ //async函数返回的是一个promise对象 return 'f' } //f(); //Promise {: "f"} f().then(functio...

async与await以及宏微任务

一个正在努力爱好运动的程序猿
座右铭:越努力越幸运,越运动越健康,热爱编程,热爱运动。



一、async与await

async function f(){  //async函数返回的是一个promise对象
        return 'f'
    }
    //f();  //Promise {<resolved>: "f"}
    f().then(function(res){   //默认为成功的状态,将该函数的返回值传给then的参数
        console.log(res)
    })

    async function f(){  //async函数返回的是一个promise对象
        return '1234'
    }
    f().then(res=>{
        console.log(res)
    });
    console.log(1);
    // 1     1234


    // await
    // await操作符用于等待一个Promise对象,它只能在异步函数async function内部使用。
    // 返回值:
    // 返回promise对象的处理结果,如果待等的不是promise对象,则返回该值本身
    // 如果一个promise被传递给一个await操作符,await将等待promise正常处理完成并返回其处理结果
    function f2(){
        console.log(4)
    }
    async function f(){
        await f2();     
        console.log(2)   
    }
    f();
    console.log(3); 

    //正常情况下,await命令后面是一个promise对象,它也可以是其它值,如字符串,布尔值,数值以及普通函数。
    console.log(2)
    async function fn(){
        console.log(3)
        await 100;  
        console.log(1)
    }
    fn()
    console.log(4)

    //await命令后面是一个promise对象
    function p(){
        return new Promise(resolve=>{
            resolve();
            console.log(1)
        });
    };
    async function fn(){
        console.log(2)
        await p();  
        console.log(3)
    }
    fn()

二、宏微任务

    //宏任务  setTimeout   setInterval 
    //微任务  promise中的then  async await

    //promise是同步还是异步?
    console.log(1);  //同步
    let a = new Promise((res,rej)=>{
        console.log(2)  //同步
    });
    console.log(3); //同步
    let a2 = new Promise((res,rej)=>{
        console.log(4)  //同步
    });
    console.log(5);   //同步
 

    console.log(1)   //同步
    let a = new Promise((res,rej) => {  
        res();
        console.log(2); //同步
    });
    a.then(() => {    //异步
        console.log(3)
    })
    console.log(4);  //同步
    let b = new Promise((res,rej) => {  
        res();
        console.log(5);  //同步
    });
    b.then(() => {  
        console.log(6) //异步
    })
    console.log(7);   //同步


    setTimeout(()=>{  //宏任务
        console.log(1)
    },0)
   new Promise((res,rej) => {  
        res();
        console.log(2);  //同步
    }).then(() => {  
        console.log(3) //微任务
    })
    console.log(4)  //同步


    async function f(){  //async函数返回的是一个promise对象
        console.log(5)  //同步
        return '1234'
    }
    f().then(res=>{   //微任务
        console.log(res)
    });
    console.log(1);   //同步

本文地址:https://blog.csdn.net/qq_41555854/article/details/109611808

相关标签: es6