Created
March 18, 2016 07:16
-
-
Save sqtds/3abd7179a3989ba0fa95 to your computer and use it in GitHub Desktop.
同步于异步的区别
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** 同步代码 | |
| * 判断url中的城市否是和info实体中城市符合(包含百强县判断) | |
| * | |
| * @return | |
| * @author LZ | |
| */ | |
| private boolean isAdaptCity(DispLocal city, List<DispLocal> dispLocalFullList) { | |
| if (city == null || CollectionUtils.isEmpty(dispLocalFullList)) { | |
| return false; | |
| } | |
| for (DispLocal dispLocal : dispLocalFullList) { | |
| if (dispLocal.getDispLocalID() == city.getDispLocalID()) { | |
| return true; | |
| } | |
| DispLocal newDispLocal = top100CountyService.checkTopDisplayLocal(dispLocal.getDispLocalID()); | |
| if (newDispLocal != null) { | |
| if (newDispLocal.getDispLocalID() == city.getDispLocalID()) { | |
| return true; | |
| } | |
| // 是百强县,需要遍历之前的id | |
| int oldDispLocalId = top100CountyService.getOldTopDisplayLocal(newDispLocal.getDispLocalID()); | |
| List<DispLocal> oldListDispLocal = dispLocalService.loadDispLocalFullPath(oldDispLocalId); | |
| for (DispLocal oldDisp : oldListDispLocal) { | |
| if (oldDisp.getDispLocalID() == city.getDispLocalID()) { | |
| return true; | |
| } | |
| } | |
| } | |
| } | |
| return false; | |
| } | |
| /** 异步代码 | |
| * 判断url中的城市否是和info实体中城市符合(包含百强县判断) | |
| * | |
| * @return | |
| * @author LZ | |
| */ | |
| private Task<AsynResult<AsyncContext, Boolean>> isAdaptCityTask(DispLocal city, List<DispLocal> | |
| dispLocalFullList, AsyncContext context) { | |
| if (city == null || CollectionUtils.isEmpty(dispLocalFullList)) { | |
| return Task.value(new AsynResult<>(context, false)); | |
| } | |
| List<Task<AsynResult<AsyncContext, DispLocal>>> newDispLocalTasks = new ArrayList<>(); | |
| for (DispLocal dispLocal : dispLocalFullList) { | |
| if (dispLocal.getDispLocalID() == city.getDispLocalID()) { | |
| return Task.value(new AsynResult<>(context, true)); | |
| } | |
| Task<AsynResult<AsyncContext, DispLocal>> newDispLocalTask = top100CountyService.checkTopDisplayLocal | |
| (context, dispLocal.getDispLocalID()); | |
| newDispLocalTasks.add(newDispLocalTask); | |
| } | |
| if (newDispLocalTasks.isEmpty()) { | |
| return Task.value(new AsynResult<>(context, false)); | |
| } | |
| return Tasks.par(newDispLocalTasks).flatMap(asynResults -> { | |
| List<Task<AsynResult<AsyncContext, Integer>>> oldDispLocalIdTasks = new ArrayList<>(); | |
| for (AsynResult<AsyncContext, DispLocal> asynResult : asynResults) { | |
| DispLocal newDispLocal = asynResult.getResult(); | |
| if (newDispLocal != null) { | |
| if (newDispLocal.getDispLocalID() == city.getDispLocalID()) { | |
| return Task.value(new AsynResult<>(context, true)); | |
| } | |
| // 是百强县,需要遍历之前的id | |
| Task<AsynResult<AsyncContext, Integer>> oldDispLocalIdTask = top100CountyService | |
| .getOldTopDisplayLocal(context, newDispLocal.getDispLocalID()); | |
| oldDispLocalIdTasks.add(oldDispLocalIdTask); | |
| } | |
| } | |
| if (oldDispLocalIdTasks.isEmpty()) { | |
| return Task.value(new AsynResult<>(context, false)); | |
| } | |
| return Tasks.par(oldDispLocalIdTasks).flatMap(asynResults1 -> { | |
| List<Task<AsynResult<AsyncContext, List<DispLocal>>>> oldListDispLocalTasks = new ArrayList<>(); | |
| for (AsynResult<AsyncContext, Integer> asynResult : asynResults1) { | |
| Integer oldDispLocalId = asynResult.getResult(); | |
| Task<AsynResult<AsyncContext, List<DispLocal>>> oldListDispLocalTask = dispLocalService | |
| .loadDispLocalFullPath(context, oldDispLocalId); | |
| oldListDispLocalTasks.add(oldListDispLocalTask); | |
| } | |
| if (oldListDispLocalTasks.isEmpty()) { | |
| return Task.value(new AsynResult<>(context, false)); | |
| } | |
| return Tasks.par(oldListDispLocalTasks).flatMap((asynResults2) -> { | |
| for (AsynResult<AsyncContext, List<DispLocal>> result2 : asynResults2) { | |
| List<DispLocal> oldListDispLocal = result2.getResult(); | |
| for (DispLocal oldDisp : oldListDispLocal) { | |
| if (oldDisp.getDispLocalID() == city.getDispLocalID()) { | |
| return Task.value(new AsynResult<>(context, true)); | |
| } | |
| } | |
| } | |
| return Task.value(new AsynResult<>(context, false)); | |
| }); | |
| }); | |
| }); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment