async和await作为异步函数,语法很简单,就是在函数前面加上async关键字,来表示它是异步的,下面这篇文章主要给大家介绍了如何通过一文教会你vue中使用async和await的相关资料,需要的朋友可以参考下
目录
- 引言
- async和await定义
- 使用场景
- 实战场景
- 补充:Vue中async await请求处理
- 小结
引言
在我们进行实际开发中会遇到异步请求的问题,这时候我们的异步请求的存在就非常的具备合理性了!接下来将会讲述异步编程终级解决方案async/await。
async和await定义
async 是异步的意思,而 await 是等待的意思,await 用于等待一个异步任务执行完成的结果。
1.async/await 是一种编写异步代码的新方法(以前是采用回调和 promise)。
2. async/await 是建立在 promise 的基础上。
3. async/await 像 promise 一样,也是非阻塞的。
4. async/await 让异步代码看起来、表现起来更像同步代码。
使用场景
在实际开发中,相信大家都会遇到关于发送请求获取数据的问题,例如:如果你遇到了等第一个请求返回数据完,再执行第二个请求(可能第二个请求要传的参数就是第一个请求接口返回的数据)这个问题,该怎么去处理呢?由于我们在不使用异步请求的情况下,默认发送多个请求是同步执行的,就会导致我们也不知道到底是哪个接口优先被执行!!!
所以,我们必须要学会使用async/await!
实战场景
话不多说,直接上代码:
const datas = async ()=> {
await request.selectPies(Route.path.split('/')[3]).then(res=>{
states.ids = res.obj
console.log(res)
})
//查询发帖子用户信息
await request.selectUsers(states.ids).then(res=>{
console.log(res.obj)
})
}
datas()
这里是在vue3语法糖中使用异步请求,从代码看出,第二个接口要使用第一个接口返回的数据,因此使用了异步请求。
补充:vue中async await请求处理
Promise.all()
用法示例:
const wait = ms => new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`wait ${ms}ms`)
resolve()
}, ms)
})
const PA = Promise.all([wait(3000), wait(1000), wait(2000)])
// 依次打印:wait 1000ms wait 2000ms wait 3000ms
async-await
同时触发多个异步操作示例
const wait = ms => new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`wait ${ms}ms`)
resolve()
}, ms)
})
;(async () => {
await Promise.all([wait(3000), wait(1000), wait(2000)])
// 依次打印:wait 1000ms wait 2000ms wait 3000ms
})()
问题:接口B需要接口A返回的数据,如果同时请求,控制不了返回速度,会出现B快于A,
实现:
async
表示函数里有异步操作,
await
表示紧跟在后面的表达式需要等待结果。
methods: {
fetchData: async function () {
var that = this
var code = Store.fetchYqm();
let params = {
inviteCode: code
}
const response = await Http.post(params,api.getCode)
var resJSON = response.data;
}
}
小结
在现在以前后端分离开发的模式下,需要访问后端接口,我们必须要懂得什么是异步请求,异步请求很简单,就是给接口的访问加上了顺序,防止它们无厘头的不受顺序限制发送请求!
到此这篇关于vue中使用async和await的文章就介绍到这了,更多相关vue使用async和await内容请搜索www.adminjs.cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.adminjs.cn!