工程中有下载的部分,后期由于需求一再变更,下载的需求变得特别复杂。描述如下:
1.下载前需要检校,检校可能成功也可能失败,或者需要用户登录等,是异步请求。请求封装在另一个sdk中,想改成同步请求比较费劲。
2.在进行多个文件下载的时候,如果一个检校不成功,其他的文件检校默认不成功,需要从队列中去除。
之前所有的文件检校全是一股脑扔到后台进行网络请求,产生了很多问题。比如一个文件检校的请求发出了,但是用户又不想检校了,这时候请求已经发出,无法收回,只能等待回调回来再取消。还有就是多个文件同事检校失败会回调多次检校失败,体验不好。现阶段VC中有很多数组之类的数据专门存储这些信息,修复相关BUG。VC中逻辑就会比较复杂,不利于后期维护。最好的解决方式就是让所有的请求单线程操作,而且线程回来之后根据返回的信息判断是否进行下一次网络请求。于是就萌生了自己写一个自定义队列的想法。在这里mark下,