我们在uniapp中调用方法时,经常返回结果类型对象是promise
处理方式:如果某个函数调用的结果打印后返回的是promise,就马上用saync和await进行优化,async放到方法名称的前面,await放到方法里面
示例:
home.vue(main.js中已配置@escook/request-miniprogram网络请求包)
- <view>
- 首页
- view>
-
- <script>
- export default {
- data() {
- return {
- };
- },
- onLoad() {
- // this.getOrder()
- this.getOrder()
- },
- methods:{
- getOrder(){
- const res=uni.$http.get(){"url"}
- console.log(res)
- }
- }
- }
- script>
-
- <style lang="scss">
-
- style>
可以看到没有用async时返回的是一个promise对象

添加async和await后
- methods:{
- async getOrder(){
- const res=await uni.$http.get("/api/public/v1/home/catitems")
- console.log(res)
- }
- }
结果:

Promise构造函数的参数是一个函数,函数里面的代码是异步的,即Promise里面的操作,和Promise()外面的操作时异步"同时"进行的。此外,只要在函数前面加上async 关键字,也可以指明函数是异步的。
async关键字实际是通过Promise实现,如果async 函数中有返回一个值 ,当调用该函数时,内部会调用Promise.solve() 方法把它转化成一个promise 对象作为返回,但如果timeout 函数内部抛出错误,那么就会调用Promise.reject() 返回一个promise 对象。若某函数调用一个异步函数(比如内部含有primise),该函数应用async修饰。