//基础参数配置
request.requestIntercept.add(
(requestConfig) => {
//添加头部参数
requestConfig.header.apiName = 'wxapp'
let reqToken = uni.getStorageSync(tokenConfig.localTokenKeyName)
if (!reqToken || reqToken == '') {
getToken().then((res)=>{
requestConfig.header.token = res
return request.request(requestConfig.url,requestConfig.data) ; // 注意返回请求
})
return true
} else {
requestConfig.header.token = reqToken
}
},
);
在请求拦截器中,写了一个自动获取token 的方法,就是本地没有的话,用getToken() 异步的去取一个,然后放到header 头当中,然后重新请求上一次的方法,
但是这样写,在页面内调用的话,
return request.request(requestConfig.url,requestConfig.data) ; // 注意返回请求
页面内的返回值一直是 undefined
麻烦大佬抽空可以帮忙看下
18937777307
5 个回复
2***@163.com (作者) - 27mv
昨天查了一下,
async 函数不管怎么样,都返回的是 promise 对象?
原本的拦截器判断 返回值 为 true 的情况是这样写的,导致返回的promise 对象 也认定为true ,导致程序不向下执行,
后来改成
requestInterceptPrevent = fnReturns.some(fnReturn =>fnReturn === true);
判断问题解决,感谢你的插件
hbxw
试试这一个
2***@163.com (作者) - 27mv
按照你的写法,
//基础参数配置
token 的res 结果可以打印出来,
777这几个也能打印出来,但是就没有后面的请求了,网络请求面板里面也只有 获取token的一条网络请求,我的理解 中只要不返回true,应该都会继续执行下面的网络请求,
hbxw
试一下这个,再不行,我远程帮你看一下?
hbxw
插件已做优化,你目前场景可直接使用