Open copewang opened 6 years ago
书里说到要点,用cancel标识变量,但是,把例子写复杂了
//---书中的代码--- func cancel(_ task: Task?) { //1.这里写死一个true的参数,是多余的, //2.如果这里是task?(false) 就是立即执行,从命名上来看,逻辑是不清晰的 task?(true) } //----精简版--- typealias CancelTask = () -> () func delay(_ time: TimeInterval, task: @escaping ()->()) -> CancelTask { var isCancelled = false let cancelTask = { isCancelled = true; } DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + time) { if !isCancelled { task() } } return cancelTask; }
书里说到要点,用cancel标识变量,但是,把例子写复杂了