async / await 为什么叫异步

外异内同

看看下面这段代码

	async function task () {
	  for (let val of [0, 1, 2, 3]) {
	    let address = ['https://mp.csdn.net','https://mp.csdn.net/mdeditor','https://baidu.com','https://mp.csdn.net/mdeditor']
	    let result = await fetch(`${address[val]}`);
	    console.log('in')
	  }
	}
	task();
	console.log('out')

这段代码先打印了 out , 然后打印两次 in, 第三次因为跨域, task函数返回错误 , 不会继续请求第四次

从上面的例子看到:
async 声明了一个 异步函数,这个 异步函数 体内有一行 await 语句,它告示了该行为同步执行,并且与上下相邻的代码是依次逐行执行的。就是说:

  • async 函数执行,返回了一个 promise 对象, 不会阻塞后面的代码, 所以可以理解 task 是一个异步方法
  • await 所在的那一行语句是同步的

既然返回promise, 上面task就可以这样

	task().then(res => {alert(res)}).catch(err=>alert(err))

task 整体是一个异步函数,内部的await是同步, 简称“外异内同”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值