在 uni-app 中 uni.request 默认是异步请求,那么如果我们想将其改为同步请求可以吗?显然是可以的!我们可以借助 Promise 结合 async + await 使请求同步化。具体步骤如下:
基于 Promise 对 request 请求进行封装
请参考之前的文章:uni-app 基于 Promise 的 request 请求封装。
使用 async + await,使异步请求同步化
<script>
import http from '@/commons/http.js'
export default {
data() {
return {
}
},
methods: {
async loadData1 (id) {
await http('data/get1', {
id: id
}).then(res => {
console.log(res.data)
}).catch(err => {
console.error(err)
})
},
async loadData2 (id) {
await http('data/get2', {
id: id
}).then(res => {
console.log(res.data)
}).catch(err => {
console.error(err)
})
}
},
async onLoad(option) {
await this.loadData1(1)
await this.loadData1(2)
}
}
</script>
注意: 当调用的级数增加的时候,需要逐级的增加 async 和 await。