// import wxCode from '@/utils/lib/code.js'

// export const apiResquest = (prams) => {

// 	return new Promise((resolve, reject) => {
// 		let url = getApp().globalData.webApi + prams.url;
// 		return uni.request({
// 			url: url,
// 			data: prams.query,
// 			method: prams.method,
// 			header: {
// 				'Authorization': uni.getStorageSync("token"),
// 			},
// 			success: (res) => {
// 				// uni.hideLoading()
// 				if (res.data.code == 1) {
// 						wxCode.codes()
// 				}
// 				resolve(res.data);
// 			},
// 			fail: (err) => {
// 				reject(err);
// 			},
// 			complete: () => {
// 				console.log('请求完成')
// 			}
// 		});
// 	})
// }



import wxCode from '@/utils/lib/code.js'

let isRefreshing = false; // 标志位，表示是否正在刷新token
let pendingRequests = []; // 存储等待中的请求

export const apiResquest = (params) => {
    return new Promise((resolve, reject) => {
        let url = getApp().globalData.webApi + params.url;
        
        uni.request({
            url: url,
            data: params.query,
            method: params.method,
            header: {
                'Authorization': uni.getStorageSync("token"),
            },
            success: (res) => {
                // 如果返回的 code 为 1，表示需要重新获取 token
                if (res.data.code == 1) {
                    if (!isRefreshing) {
                        isRefreshing = true; // 设置标志位
                        wxCode.codes().then(newToken => {
                            isRefreshing = false; // 请求完成，重置标志位
                            // 更新所有等待中的请求的 token
                            pendingRequests.forEach((req) => {
                                req.resolve({ ...res.data, token: newToken });
                            });
                            pendingRequests = []; // 清空等待中的请求
                        }).catch((err) => {
                            isRefreshing = false; // 请求失败，重置标志位
                            // 拒绝所有等待中的请求
                            pendingRequests.forEach((req) => {
                                req.reject(err);
                            });
                            pendingRequests = []; // 清空等待中的请求
                        });
                    }
                    // 如果正在刷新，加入等待中的请求
                    return pendingRequests.push({ resolve, reject });
                }

                resolve(res.data); // 正常返回
            },
            fail: (err) => {
                reject(err);
            },
            complete: () => {
                console.log('请求完成')
            }
        });
    });
}

