后一个 request 如何调用前一个 request数据的问题?

小程序 文章 2020-08-06 22:21 581 0 全屏看文

AI助手支持GPT4.0

后一个 request 如何调用前一个 request数据的问题?How to call the data of the previous request in the next request?

后一个 request 如何调用前一个 request数据的问题?

我的小程序页面有两个 request,前一个发送到平台调用 钥 ,获取密钥之后该怎么将密钥反馈进下一个request 的header 里面作为输入的数据?


My applet page has two requests. The first one is sent to the platform call key. After obtaining the key, how can I feed the key back into the header of the next request as input data?

回答:

宋佳耀:

小程序的请求都是异步的,无法通过属性设置为同步。所以你可以:

1、把第二个请求放到第一个请求的success里写。

2、通过封装callback回调方法的方式,把第二次请求放到第一次请求的回调中执行

3、通过引入Promise, async 以及 await的方式同步.

จุ๊บ:

前一个 request 的success 方法里面 写下一个request

o0o有脾气的酸奶:

重写wx.request,多加一个参数token,参数token为true时会获取缓存的token,缓存token不存在则会先请求获取token,再携带token请求业务接口

// utils/overWrite.jslet { request } = wxObject.defineProperty(wx, 'request', {  async value(p){    if(p.token){      delete p.token      // 从globalData或缓存中取token,这里以缓存为例      var token = wx.getStorageSync('x-auth-token') || ''      if(!token){        // 不存在token,则请求获取token        var res = await new Promise((rs, rj)=>{          request({            url:'这里填写你的token获取地址',            successres=>rs(res),            failee=>rj(e),          })        })        // 假设返回结果为{token:'xxxxxxxxxxxxx'}        console.log(res)        token = res.data.token || ''        if(token){          // 存于globalData或缓存中,这里以缓存为例          wx.setStorageSync('x-auth-token', token)        }else{          console.error('获取token失败')        }      }      // 合并header      p.header = Object.assign(p.header || {}, {'X-Auth-Token':token})            return request.call(this, p)    }  }})


在app.js头部引用overWrite.js

require('./utils/overWrite')App({  onLaunchfunction () {}})


在页面中使用

// pages/index/index.jsPage({  onLoad: function () {        // 普通请求,不需要token    wx.request({      url'你的业务接口地址'    })        // 需要带token请求    wx.request({      token:!0,      url'你的业务接口地址'    })  },})

若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

-EOF-

AI助手支持GPT4.0