如何处理“异步查询获取IP的接口时, 1S之后再发起查询而前一次查询结果还没有返回”的问题?

问题

在HTTPDNS iOS/Android平台,使用getIpByHostAsync异步查询获取IP的接口时, 官方Demo是延时1s再次查询, 如果1s之后再次发起查询而前一次查询结果还没有返回,此时该如何处理?

解答:

  • 异步解析接口,首先会查询缓存,然后才异步域名解析更新缓存。

  • 如果1s之后再发起查询而前一次查询结果还没返回,则会返回null,即没有查询到结果,然后会走降级逻辑。

  • 异步接口不阻塞调用线程,立即返回结果:

    • 有缓存,返回解析结果。

    • 没有缓存,返回null并触发异步解析动作,另起新的线程发起解析网络请求。

    说明

    异步接口具体回调的时机没有给出,这个需要搭配降级机制来做,在异步接口返回null时,使用降级策略,在能返回IP时才使用IP,两者搭配使用才能达到最优效果。