目前正在开发一款小程序,基于mpvue,有一个请求的问题困扰了好久,求大神指点。
问题是,启动小程序后调用wx.login拿到code传给后端,然后获取session3rd,然后规定每次请求必须带上这个参数,但是现在是,进入小程序会请求主页或者其他页面的请求,这个时候session3rd也是异步的,还没有获取到存入缓存,会出现其他请求请求时没有带上这个参数,请问应该怎么处理,才能保证拿到session以后才开始其他请求呢?
目前正在开发一款小程序,基于mpvue,有一个请求的问题困扰了好久,求大神指点。
问题是,启动小程序后调用wx.login拿到code传给后端,然后获取session3rd,然后规定每次请求必须带上这个参数,但是现在是,进入小程序会请求主页或者其他页面的请求,这个时候session3rd也是异步的,还没有获取到存入缓存,会出现其他请求请求时没有带上这个参数,请问应该怎么处理,才能保证拿到session以后才开始其他请求呢?
我也遇到了相同的问题。小程序一开始就需要至少这2个异步请求(code换取session3rd,session3rd作为请求头参数换取userInfo)。
其实准确来说应该是3个异步请求。。因为wx.login方法拿code也是异步的。
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.1k 阅读
将所有的请求进行一次封装,暂存请求,抛出一个Promise对象,待到wx.login以及请求服务端接口获取到session3rd参数后再将暂存的请求发出即可。
这样能保证所有的请求都是在获取到session3rd后才会发起
补充代码链接
首先,一些依赖于session3rd参数的请求与获取session3rd的请求一同发出,这本身就是逻辑问题
所以这里有一个简单的示例,暂存请求等待前置请求发起成功后再执行:git地址