async和await关键字的作用和用法

async和await

async和await的出现

async和await出现是在es6中,为了去简化promise的写法的。使用promise结合生成器简化promise的写法

  1. async关键字:简化创建promise的
  2. await关键字:等待,相当于then方法
    await关键字必须写在被async修饰的函数中

async

async 作为关键字放在一个函数前面表示函数是个异步函数,异步函数也就意味着该函数的执行不会阻塞后面代码的执行。写一个简单的async函数

async function test(){
    return "hello world"
}
test().then((res)=>{
    console.log(res)
})
console.log("我虽然在后面但是我先执行");

执行结果是
在这里插入图片描述

使用async修饰的函数 他返回的是一个promise对象,我们需要使用promise的方法调用,加载,并不会阻塞进程,但是因为他是异步的所有他等待同步执行完在去输出hello world
虽然我们的console.log在后面输出,但是在执行node代码的时候,他却是先输出的

await

而 await关键字必须写在被async修饰的函数中,但是他会阻塞进程,await是等待的意思,那么它等待什么呢,它后面跟着什么呢?其实它后面可以放任何表达式,不过我们更多的是放一个返回promise 对象的表达式。注意await 关键字只能放到async 函数里面
这是个简单的关于异步等待的一个函数

async function async1(){
    console.log('async1 start')
    await async2()
    console.log('async1 end') 
}
async function async2(){
    console.log('async2')
    await async3()
    console.log("async2 end")
}
async function async3(){
    console.log('async3')
}
async1();

在我们的async执行的时候,async2阻塞队列需要等待async2里面的东西执行完,在执行async1的输出

async和await关键字的作用和用法_第1张图片

综上所述:async和await都是函数关键字修饰词,都会将他们修饰的函数变成异步的函数,但有一点的不同,就是await关键字必须卸载async修饰的函数里面并且会阻塞队列

你可能感兴趣的:(node.js)