iOS - 业务逻辑中处理案例1 - 超时操作

场景描述:现集成的多个第三方sdk中。(需要去加载第三方的数据和素材,串行顺序发起不同第三方sdk请求的场景)

1、有的第三方sdk有两个加载成功回调,一个是didload(数据加载完成)另一个是addidload(素材加载完成),结束。

2、有的第三方sdk只有一个回调:didload(数据和素材加载完成),现有逻辑是在发起请求后,一定的时间内,广告素材没加载完成,则超时错误。请求下一个(素材加载完成是在数据加载完成之后回调)

新逻辑:新增数据加载超时错误,(数据加载超时比素材加载超时短)超时则请求下一个,未超时,不处理,等待素材加载。素材加载超时,则请求下一个。

目的:为了缩短数据请求时间。节省数据加载超时和素材加载超时的过程。

服务器针对每一个不同第三方下发dataOutTime和resourceOutTime两个参数,如果只有一个素材加载成功回调的第三方,则只下发resourceOutTime这一个参数。

didload回调中调用一个block,这个block 在发起请求开始后,5秒内可以有效更改isDataLoaded 参数执行。

伪代码:

if (dataOutTime != nil ){

  __block bool isDataLoaded = no; 

  block(){

  isDataLoaded = yes

  }

  Dispatch_after( dataOutTime ){

    if ( !isDataLoaded){

    数据加载超时逻辑。。。。

    }

  }

}

Dispatch_after( resourceOutTime ){

  素材加载超时逻辑。。。。

}

在各个第三方有两套sdk 的didload回调代码中调用block,如果在dataOutTime时间之后调用,那么在dataOutTime时间到的时候block没有调用,则isDataLoaded参数为no,执行数据加载超时逻辑;在dataOutTime内回调didload并执行block,则isDataLoaded参数为yes,不做任何操作。

猜你喜欢

转载自www.cnblogs.com/qzCodeDiary/p/11844264.html
今日推荐