这个项目是在微信中基于微信的静默登录,也就是不需要多余用户登录填写,只需要跳转重新加载一遍页面就完成登录了,之前是用拦截器做的检测到未登录的代码就直接跳转实现自动登录再返回原来页面,但是同一个页面该发起的请求还是同时发起了。
现在我想实现的是
//同时发起5个请求
axios1()//假如第一个请求拿到数据检测到未登录的话就取消掉后边的几个请求
axios2()
axios3()
axios4()
axios5()
有什么比较好的思路或者实现方式么?
这个项目是在微信中基于微信的静默登录,也就是不需要多余用户登录填写,只需要跳转重新加载一遍页面就完成登录了,之前是用拦截器做的检测到未登录的代码就直接跳转实现自动登录再返回原来页面,但是同一个页面该发起的请求还是同时发起了。
现在我想实现的是
//同时发起5个请求
axios1()//假如第一个请求拿到数据检测到未登录的话就取消掉后边的几个请求
axios2()
axios3()
axios4()
axios5()
有什么比较好的思路或者实现方式么?
这样行吗?
axios1().then(res=>{
if(!res.login){
//go login
}else{
axios2()
axios3()
axios4()
axios5()
}
})
首先包装一下每一个 promise ,即使失败也至为 resolve 状态,然后用 Promise.race 确保一个完成后记录下 index 或者 id,然后重新发这个 array 里面的其他请求。
request 的 abort 不知道兼容性如何,这种方法是所有请求都必须发完全,并且除了成功的那个其他都会发两遍。
你可以参考我这篇笔记,思路是一样的,将所有的请求放到一个数组里,然后有一个请求去请求登陆的,待其请求完成后再发起数组里其他的请求
http://segmentfault.com/n/133...
首先,你要复写 axios 方法(不推荐)或者自己封装一个方面(推荐),然后:
13 回答13k 阅读
7 回答2.2k 阅读
9 回答1.7k 阅读✓ 已解决
6 回答1.7k 阅读
3 回答1.3k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
你可以等到一个请求完之后在决定是否要发起后续的请求