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

关于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

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