async用于声明一个函数是异步的,而await用于等待一个异步方法执行完成
async:
- 返回promise对象
- 可以调用then方法,并因此执行异步效果
- 该promise的resolve值就是函数return的值
await:
- 返回值,相当于then,等待一个promise对象
- 并且返回promise对象的处理结果(成功把resolve函数作为await表达式的值)
- 如果等待的不是 promise对象,则用promise.resolve(xxx)转化
_await命令后面可以是promise对象或原始类型的值._
await等的是右侧表达式的结果:
- 右侧如果是一个'hello'或什么值,那表达式的结果就是'hello'
- 右侧如果是函数,那么函数的return就是表达式的结果
await右侧表达式:
- 不是promise对象,await会阻塞后面的代码,先执行async外面的同步代码,同步代码执行完,再回到async内部,把这个非promise的东西,作为await 表达式的结果.
- promise对象,await也会暂停async后面的代码,先执行async外面的同步代码,等着promise对象fullfilled,然后把resolve的参数作为await表达 式的运算结果.
async关键字用于函数上(async函数的返回值是promise实例对象),await关键字用于async函数当中(await可以得到异步的结果)