【一分钟JavaScript】async和 await

在上一节已经讲了Generator函数(juejin.im/post/5cff72…),如果没有认真读,请再次打开看一下。

理解了Generator函数,async和await就很简单了:就是把Generator的星号*换成async,把yield换成await。

注意

  • async返回一个Promise对象,可以使用then方法;await用于等待一个Promise对象。
  • await返回Promise对象的处理结果;如果等待的不是Promise对象,则返回该值本身。
  • 如果await处理的对象是Promise,则等待Promise对象resolve,再恢复async函数的执行。也就是说async函数自带执行器,而无需像yield函数那样使用next()调用。

示例:

async function asyncFn(){
  await setTimeout(console.log(1),4000);
  await setTimeout(console.log(2),3000);
  await setTimeout(console.log(3),2000);
  return 4;
}
asyncFn().then(v=>{
  console.log(v)
})
复制代码

执行结果:

1
2
3
4
复制代码

使用场景

  • 实现一个程序停顿

async function sleep(interval){
	await new Promise(resolve=>{
		setTimeout(resolve,interval);
    });
}
async function tick(){
	for(let i=0;i<5;i++){
		console.log(i);
		await sleep(1000);
    }
}
tick();
复制代码

执行结果(每隔一秒执行一次console.log):

0
1
2
3
4
复制代码

转载于:https://juejin.im/post/5d0061d7e51d4577583ddca5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值