收藏
回答

怎么等onload接口请求有返回值之后, 再调用onshow的接口请求?

目前遇到问题: 一个请求A要放在onload里面, 一个请求B要放在onshow里面; 需求=>要等B请求要拿A请求返回值做参数

回答关注问题邀请回答
收藏

7 个回答

  • Api调用师
    Api调用师
    2023-07-10

    把onload里接口请求包个promise并把引用存起来,在onshow的时候等待primise成功后再请求onshow接口

    2023-07-10
    有用 1
    回复
  • 帅帅
    帅帅
    2023-04-18

    onload开始请求A,并记录下现在正在请求A

    onshow检查结果:

    1、A成功,请求B

    2、A失败,依次请求AB

    3、A请求中,记录下onshow调用但未请求B,在A返回结果后发现这个记录,就去继续请求B

    2023-04-18
    有用 1
    回复 4
    • 大熊
      大熊
      2023-04-18
      你这个还是要计时器
      2023-04-18
      回复
    • 帅帅
      帅帅
      2023-04-18回复大熊
      不用啊?哪用计时器了
      2023-04-18
      回复
    • 帅帅
      帅帅
      2023-04-18回复大熊
      随便一个变量就行了,然后在请求的回调里在置空这个变量,或者0、1什么的都行
      2023-04-18
      回复
    • 帅帅
      帅帅
      2023-04-18回复大熊
      不影响啊,切换不会清空你记录的缓存,想请求或者不想请求都可以根据缓存判断
      2023-04-18
      回复
  • 原来如此
    原来如此
    05-14

    很简单啊,我是这样实现的,

    data:{

    is_finished:false, //默认未处理

    }

    onLoad() {

    this.f1()

    }

    onShow() {

    this.f1()

    this.setData({

    is_finished:false, //这样每次进入这个页面 show 都会执行一次

    })

    }



    function f1() {


    if(this.data.is_finished== true{

        return;

      }

      this.setData({

        is_finished:true             

      })

    wx.request......... 就可以写下去 你要实现的代码


    }


    以上可以实现 onLoad 和 onShow 只有其中一个可以成功 执行完 f1

    05-14
    有用
    回复
  • showms
    showms
    2023-04-18

    onload注册一个回调函数onloadCallback,并且把请求A结果存一个变量OBJ,然后onshow执行的时候,如果OBJ不为空,则请求B,如果OBJ为空,也注册一个回调函数onshowCallback(等着由onloadCallback调用),当执行onshowCallback的时候请求B

    2023-04-18
    有用
    回复
  • PENG
    PENG
    2023-04-18

    async onLoad() {

    await ...

    }

    2023-04-18
    有用
    回复
  • Mr.Zhao
    Mr.Zhao
    2023-04-18

    修改需求,接口合并

    2023-04-18
    有用
    回复
  • 拾忆
    拾忆
    2023-04-18

    接口返回是异步的,你可以通过定时器来刷新看看A接口返回值后再请求B接口。

    2023-04-18
    有用
    回复
登录 后发表内容