React Native iOS模拟器循环await请求仅首条成功问题求助
React Native iOS模拟器中Drive API分块上传仅首请求成功的问题解决
问题场景
我通过Drive API实现文件分块上传,采用for const of循环结合await fetch保证请求按顺序执行,Web环境下完全正常,但在React Native 0.64.2的iPhone 15 Pro Max模拟器(运行于2021款14英寸MacBook)中,仅第一条请求成功,后续所有请求均触发Network request failed错误——哪怕添加了5秒的await sleep延迟也没用。不过在iOS真机上运行完全正常,推测是iOS模拟器存在限制。
可能的原因与解决建议
- 模拟器与真机的网络栈差异:iOS模拟器的网络实现逻辑和真机有细微区别,旧版本RN(比如0.64.x)对新机型模拟器(如iPhone 15 Pro Max)的网络适配可能存在bug。可以试试:
- 切换到旧款模拟器(比如iPhone 14系列)测试,看问题是否消失
- 重置模拟器:通过
Simulator > 设备 > 抹掉所有内容和设置重置后再重新测试
- Google服务的模拟器访问限制:部分Google API对模拟器的多请求场景可能存在拦截或授权验证问题。可以尝试:
- 在模拟器中登录Google账号,确保Drive API的授权会话处于有效状态
- 检查模拟器的系统时间,确保和真机时间同步——时间偏差可能导致授权令牌失效
- RN版本兼容性问题:React Native 0.64.2属于较旧版本,对iOS 17+(iPhone 15 Pro Max模拟器默认系统)的支持存在局限性。建议:
- 升级RN到较新版本(如0.70及以上),新版本对iOS模拟器的网络兼容性更好
- 若暂时无法升级,可尝试在
Info.plist中添加NSAppTransportSecurity配置(仅作参考,Drive API本身是HTTPS):<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
内容的提问来源于stack exchange,提问作者Kim Mỹ
相关产品推荐
相关产品推荐

