You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R4J调用Riot API获取比赛列表异常:正常运行返回空列表

问题分析与解决办法

你遇到的情况大概率是异步操作未等待完成就获取结果导致的:调试模式下步进执行会给异步请求足够的时间完成,所以能拿到数据;但正常运行时代码不会等待异步操作结束,直接去读结果自然是空列表。

具体解决步骤

  • 先确认getMatchList方法的返回值类型:R4J的大部分API是异步实现,返回的是CompletableFuture(Java风格异步类型)或者支持Kotlin协程的异步对象。
  • 如果用Kotlin协程,在协程作用域内用await()等待结果完成:
    // 示例:在runBlocking或ViewModel的viewModelScope等协程域中执行
    val matchList = r4j.loLAPI.matchAPI.getMatchList(RegionShard.EUROPE, summoner.puuid).await()
    // 此处处理matchList即可获取到有效数据
    
  • 如果用Java风格的CompletableFuture,直接用join()阻塞等待结果:
    val matchFuture = r4j.loLAPI.matchAPI.getMatchList(RegionShard.EUROPE, summoner.puuid)
    val matchList = matchFuture.join()
    

额外排查点

  • 可以添加日志打印请求的响应状态码,排除Riot API速率限制的问题(虽然调试能拿到数据的话概率较低,但正常运行时短时间高频请求可能触发限制)。
  • 检查是否有异常被吞掉:异步操作抛出异常但未捕获时,可能导致结果为空。可以给Future添加异常监听:
    matchFuture.exceptionally { e ->
        e.printStackTrace()
        null
    }
    

内容的提问来源于stack exchange,提问作者Martim Gouveia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:09:54