需求:
同样的任务,启动多次,多个异步任务(比如3个)按照顺序(A,B,C)分别启动,只保留最后一个任务的结果。
如果能保证只对最后一个启动的任务(C)的回调结果进行处理,那么就能保证数据的准确。
但是不知道任务数量,如何确定最后一个呢?
解决方案:
任务启动的时候,生成一个UUID,更新任务全局的UUID,在回调结果中,比较当前任务的UUID和全局的UUID是否一致,一致则执行任务,否则放弃执行。
问题:
这个方案,只能保证,最后时刻(所有异步任务都执行完成时),最终的结果是最后一个任务的执行结果。并不能保证中间任务(比如B)的回调不会被执行,如果在中间任务被执行了,那么会出现数据不一致,如果恰巧B执行了,C的回调失败了,那么数据也会错误。