async和await

  首先要说明的是async和await的用法都是promise的语法糖,更确切的说:async 函数就是 Generator 函数的语法糖。await必须在async函数中使用,但是async函数的调用不一定需要await关键字,且async函数中不一定有await。
  async和await同时使用时,完成的操作是:async 会将其后的函数(函数表达式或 Lambda)的返回值封装成一个 Promise 对象,而 await 会等待这个 Promise 完成,并将其 resolve 的结果返回出来。

  1. async
    将函数的返回结果用Promise.resolve()包裹起来,如果async函数有返回值result,则该async函数的返回结果为Promise.resolve(result), 如果async函数没有明确的返回值,则该async函数的返回结果为Promise.resolve(undefined),async函数的结果应该用then链来进行处理。
    async函数中没有await关键字时,会直接返回promise对象,不会阻塞后面的语句。
async function foo1(params) {
	return params
}
async function foo2(params) {
	console.log('params-->', params)
}
let f1 = foo1(1)
let f2 = foo2(1)

得到的f1和f2的结果如下图:
在这里插入图片描述
2. await
  await一般用来等待promise对象,但是要注意的是:await不是一定要用来等待promise对象,实际上它可以用来等待任意表达式的结果。
  只是如果它等待的是一个promise对象的话,会阻塞后面的语句,直到promise的resolve,且await的返回结果是就是resolve的结果(即Promise.resolve(data)的data);但是如果是一般表达式的话,就不会造成阻塞,且返回的结果就是表达式的结果。

function foo1() {
	return 'hello'
}
async function foo2() {
	return Promise.resolve('world')
}
async function foo3() {
	let f1 = await foo1()
	let f2 = await foo2()
	console.log(f1, f2)
}
foo3() //打印出的结果是"hello world"

总的来说,async和await是用于对promise进行简写,且使其看起来更像同步的一种写法。
参考:
理解 JavaScript 的 async/await
async 函数的含义和用法

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值