代码没看明白,不过感觉本质上是一个根据当前请求的响应决定下次如何请求的问题,你看看下面的实例代码有帮助不 const items = [1, 2, 3]; const upload = (file) => new Promise((resolve) => { setTimeout(() => { const data = items.pop(); resolve(data); }, 1000); }); const request = async () => { const res = await upload(); // 替换成你的业务判断 if (res > 0) { console.log('res', res); request(); } }; request();