es6之async函数【学习笔记】

当await后面是Promise时,执行异步操作,也就是先执行函数外面后面的语句,等到异步操作完成再执行函数内部后面的语句,函数返回Promise对象,最后执行then方法指定的动作,当await后面非Promise对象时,作为同步操作执行,下面是例子:
function timeout(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}
async function asyncPrint(ms){
  await console.log('非promise对象');
  await timeout(ms);
  console.log('async1 complete');
  await timeout(ms);
  console.log('async2 complete');
}
asyncPrint(2000).then(()=>{console.log('函数返回');});
console.log('外部语句');

"async函数内部return语句返回的值,会成为then方法回调函数的参数"

"async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态。抛出的错误对象会被catch方法回调函数接收到"

可用await Promise.all()实现异步操作的同时触发

asyn函数的实现原理是返回一个自动遍历Generator函数(作为参数传入)内部状态的Promise。

带引号的内容直接引自原文: http://es6.ruanyifeng.com/#docs/async


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值