• uniapp中返回结果是promise的处理方式


    1.问题介绍

    我们在uniapp中调用方法时,经常返回结果类型对象是promise

    处理方式:如果某个函数调用的结果打印后返回的是promise,就马上用saync和await进行优化,async放到方法名称的前面,await放到方法里面

    示例:

    home.vue(main.js中已配置@escook/request-miniprogram网络请求包)

    1. <script>
    2. export default {
    3. data() {
    4. return {
    5. };
    6. },
    7. onLoad() {
    8. // this.getOrder()
    9. this.getOrder()
    10. },
    11. methods:{
    12. getOrder(){
    13. const res=uni.$http.get(){"url"}
    14. console.log(res)
    15. }
    16. }
    17. }
    18. script>
    19. <style lang="scss">
    20. style>

    可以看到没有用async时返回的是一个promise对象

    添加async和await后

    1. methods:{
    2. async getOrder(){
    3. const res=await uni.$http.get("/api/public/v1/home/catitems")
    4. console.log(res)
    5. }
    6. }

    结果:

    2.对promise的理解

    • 由于ajax异步方式请求数据时,我们不能知道数据具体回来的事件,所以过去只能将一个callback函数传递给ajax封装的方法,当ajax异步请求完成时,执行callback函数。
    • promise对象接受resolve和reject两个参数,当一个异步动作发生时,promise对象会通过resolve完成对动作成功进行解析,reject会捕获这个动作的异常。一个promise对象,通过new Promise().then()执行下一步骤操作。
    • axios is a promise based HTTP client for the browser and node.js。也就是说,使用axios发出请求,难免涉及promise

    Promise构造函数的参数是一个函数,函数里面的代码是异步的,即Promise里面的操作,和Promise()外面的操作时异步"同时"进行的。此外,只要在函数前面加上async 关键字,也可以指明函数是异步的。

    async关键字实际是通过Promise实现,如果async 函数中有返回一个值 ,当调用该函数时,内部会调用Promise.solve() 方法把它转化成一个promise 对象作为返回,但如果timeout 函数内部抛出错误,那么就会调用Promise.reject() 返回一个promise 对象。若某函数调用一个异步函数(比如内部含有primise),该函数应用async修饰。

  • 相关阅读:
    链表
    关于 Eclipse 的一场 “三角关系”
    KeyTool生成证书链及使用
    五年数据库专家,带你深入高性能 MySQL 架构系统,不要等到面试再追悔莫及
    苹果为小学生推出编程指南
    探索未来科技:量子计算的前沿与挑战
    Acwing 800. 数组元素的目标和
    Linux Podman安装MySQL数据库
    [附源码]java毕业设计逸尘房屋销售管理系统
    R语言中的数据重塑
  • 原文地址:https://blog.csdn.net/m0_63748493/article/details/126939959