君不见
君不见
  • 发布:2021-10-19 01:32
  • 更新:2021-10-21 04:06
  • 阅读:509

关于luch-request http 3.0.7 请求插件 代码的疑问

分类:uni-app

本人技术有限 参考大佬们的代码使用了luch-request http请求插件,非常感谢luch-request http请求插件的开发者分享的这个好用的插件,谢谢。
现在有一个问题请教一下,有一段代码有疑问,想请教各位大佬一下:
代码如下:

let isRefreshing = false;  
let requests = [];  
http.interceptors.request.use(async (config) => {  
	/* 请求之前拦截器。可以使用async await 做异步操作 */  
	config.header = {  
		...config.header,  
	}  
	//isRefreshing同一个页面只执行一次  
	if (!isRefreshing) {  
		isRefreshing = true;		  
		await handleRefreshToken();		  
		requests.forEach(cb => cb());  
		requests = [];  
		isRefreshing = false;  
	} else {  
		return new Promise(resolve => {  
			// 将resolve放进队列,用一个函数形式来保存,等token刷新后直接执行  
			requests.push(() => {  
				resolve(http.request(response.config));  
			});  
		});  
	}  
	config.header['accessToken'] = uni.getStorageSync("accessToken"); // 拦截器header加参  uni.getStorageSync('accessToken')  
	return config  
}, (config) => {  
	return Promise.reject(config)  
})

await handleRefreshToken() 代码如下:

// 刷新Token  
async function handleRefreshToken() {		  
	await http.post(”服务器accessToken地址“, {}).then(async r => {  
		isRefreshing = false;  
		try {uni.setStorageSync("accessToken", r.data.token);return true;} catch (e) {return false;}		  
	}).catch(err => {  
		isRefreshing = false  
	});  
}

我的疑问是 当我把 http.interceptors.request.use 里的
return new Promise(resolve => {
// 将resolve放进队列,用一个函数形式来保存,等token刷新后直接执行
requests.push(() => {
resolve(http.request(response.config));
});
});
删除了,才可以正常获取accessToken,如果不删除,就卡在 handleRefreshToken()函数里出不来,
想问一下,我删除了
// 将resolve放进队列,用一个函数形式来保存,等token刷新后直接执行
requests.push(() => {
resolve(http.request(response.config));
});
});
会有什么影响,谢谢。

2021-10-19 01:32 负责人:无 分享
已邀请:
林军

林军

promise需要return 吧
return resolve

  • 君不见 (作者)

    很感谢你的回复,不过我看不明白你的意思 ,能不能详细说一下,谢谢。


    2021-10-21 23:04

该问题目前已经被锁定, 无法添加新回复