账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    多个异步请求,如何按顺序加载?
    40
    0
    是UNIAPP里的函数加载顺序。onLoad: function(option) { this.draftId = option.draftId; this.getSurveyorList(); this.getDictPortBerth(); this.getDictCargoName(); this.getTaskInfo(taskId); // 判断如果有taskId,则是编辑页面 let taskId = option.taskid; if (taskId) { this.isEdit = true; //设置是编辑页面 this.getTaskInfo(taskId); uni.setNavigationBarTitle({ title: '修改测量任务' }); } },this.getSurveyorList();this.getDictPortBerth();this.getDictCargoName();this.getTaskInfo(taskId);这四个方法都是异步请求的,前三个是获取数据字典的数据。目前同时执行的话,有时候因为速度不一致,偶尔会导致拿不到字典数据。如何让这四个函数/方法,按上下顺序执行?应该使用Promise,但是没研究明白。这是其中一个方法的写法://获取字典数据-泊位 async getDictPortBerth() { const res = await this.$myRequest({ url: 'system/dict/data/type/draft_port_berth' }) this.berth = res.data.data.map(item => item.dictValue) //es6二维数组取值,形成新的一位数组 }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 柳花河 普通会员 1楼

      在Python中,你可以使用asyncio.gather()函数来按顺序加载多个异步请求。这个函数会返回一个协程列表,每个协程都是一个异步请求的结果。

      以下是一个例子:

      ```python import asyncio

      async def async_request(request): print(f"Processing request {request}") await asyncio.sleep(1) print(f"Done processing request {request}")

      async def main(): requests = [ async_request("request1"), async_request("request2"), async_request("request3"), ]

      await asyncio.gather(*requests)
      

      asyncio.run(main()) ```

      在这个例子中,async_request函数是一个异步请求函数,它会在控制台上打印出请求的详细信息,然后暂停1秒钟,最后打印出处理请求的结果。

      main函数定义了一个包含三个异步请求的列表,然后使用asyncio.gather()函数按顺序执行这些请求。

      注意,asyncio.gather()函数会阻塞当前线程,直到所有的异步请求都完成。如果你不希望阻塞当前线程,你可以使用asyncio.run()函数的asyncio.create_task()函数,它会返回一个任务,这个任务会在执行完毕后恢复执行当前线程。

      ```python async def main(): requests = [ async_request("request1"), async_request("request2"), async_request("request3"), ]

      await asyncio.create_task(asyncio.gather(*requests))
      

      asyncio.run(main()) ```

      在这个例子中,asyncio.create_task()函数返回了一个任务,这个任务会在执行完毕后恢复执行当前线程。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部