async/await节约了什么代码?

大概几年前,我就学了async/await。但是仅限于能用,不知其中奥秘。这篇文章从如何优雅偷懒说一下async/await。

async/await实质上不需要我们return new Promise对象了。

一个函数前面加上async修饰符,将会发生什么?

async function afun () {
	return 'afun'
}

// 执行函数的结果是:Promise {: 'afun'}
//  加上async后,我们可以直接使用.then方法咯,而且函数的返回值,会被当做参数传递进去。


afun().then(val=>{
	//  val === ‘afun’
})

// 这一步等同于
let f = await afun() // 输出‘afun’

await一定是要包含在一个用async声明的函数中。

经常使用的场景是,在mvvp框架里,生命周期函数中调用ajax异步的结果。发起的网络请求是异步的,获得的结果并不是立即执行的,于是我们使用await等待网络请求的结果。

async修饰符修饰代表的含义是,这个函数是一个异步回调函数,要等到await函数返回的结果,才能算这个函数执行完成了。

await是在接收一个异步请求的数据结果,典型的是ajax请求。

async mounted () { 

	// await是在接收一个异步请求的数据结果,await会把结果包装成Promise对象。
	let res = await ajax.post('baidu,com',{})
	
}

async/await减少了代码量,让嵌套回调更加优雅

async/await这两个关键字,主要是为了解决异步问题,async代表一种提醒,后面函数中有异步操作,await表示要等待异步方法执行完成。

有异步的时候,就加上async;
要等待的时候,就加上await;

你可能感兴趣的:(JS,javascript,ajax,前端)