通常情况下不会在 `new Promise()` 里用 `async` 函数。如果想用 `await`,可以不用 `new Promise()` 直接把外层函数定义为 `async` 函数,比如 const request = async (url: string, method: string, data?: any) => { // ^^^^^ 声明为 async 函数 if (isRefreshToken) return // 判断token超时,刷新token if (Store.getters.expiresTime && new Date().getTime() >= Store.getters.expiresTime) { await refreshData() // ^^^^^^^^^^^^^^^^^^^ 这里如果发生错误,会 reject 穿透出去 return } } 既然用的 TypeScript,会发现 `request` 的返回类型是 `Promise`,和 `return new Promise(...)` 的返回类型是一致的。如果确实要用 Promise 对象,应该这样 let isRefreshToken = false const request = (url: string, method: string, data?: any): Promise => { return new Promise((resolve, reject) => { // ^^^ 不要 async,内部也不要用 await(不赞成 await 和回调混用) if (isRefreshToken) return // 判断token超时,刷新token if (Store.getters.expiresTime && new Date().getTime() >= Store.getters.expiresTime) { refreshData().then(resolve, reject); // ^^^^^^^^^^^^^^^^^^^^^^ 将 refreshData 的运行和 resolve, reject 绑定起来 return } }); } const refreshData = async () => { } 所以两种方式,一种是直接定义 async 函数,另一种是在 new Promise() 里正确调用 resolve 和 reject。 顺便说一下,这不是“同步”,是异步。就算是用 await,也是异步程序的“同步写法”,而不是同步。