主要目的,熟悉如何通过promise挂起异步,并在指定位置调用 let requests = [] let isGetOpening = false //请求拦截 async function requestInterceptor(url){ let token = false //判断条件 if (!token) { if(!isGetOpening){ isGetOpening = true //从接口获取token token = await _userLogin() params.openId = token isGetOpening = false //retryOriginalRequest数组已经push完毕,此时调用被挂起函数的resolve requests.forEach(cb=>cb(url)) requests = [] } const retryOriginalRequest = new Promise(resolve=>{ //保存resolve以实现挂起状态,且返回promise对象 requests.push(()=>{ resolve(requestInterceptor(url)) }) }) return retryOriginalRequest } return requestHttp(url) } //解构赋值取参数 async function requestHttp(url){ //接口请求 }