大佬教程收集整理的这篇文章主要介绍了ios – Swift – 方法链接,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
getListForID(12).success { // success block }. Failure { // Failure block }
首先,您必须定义一个新类来表示“结果处理程序”.这就是您的成功和失败函数将传递的内容,允许您添加多个尾随闭包以构成完成块逻辑.你会希望它看起来像这样:
class ResultHandler { typealias successClosure = requestHandler.output->Void typealias FailureClosure = Void->Void // the success and failure callBACk arrays private var _successes = [successClosure]() private var _@R_567_4895@ = [FailureClosure]() /// Invoke all the stored callBACks with a given callBACk result func invokeCallBACks(result:requestHandler.Result) { switch result { case .success(let output): _successes.forEach{$0(output)} case .Failure: _@R_567_4895@.forEach{$0()} } } // remove all callBACks – Could call this from within invokeCallBACks // depending on the re-usability of the class func removeAllCallBACks() { _successes.removeAll() _@R_567_4895@.removeAll() } /// appends a new success callBACk to the result handler's successes array func success(closure:successClosurE) -> Self { _successes.append(closurE) return self } /// appends a new failure callBACk to the result handler's @R_567_4895@ array func failure(closure:FailureClosurE) -> Self { _@R_567_4895@.append(closurE) return self } }
这将允许您定义要在完成时执行的多个成功或失败闭包.如果您实际上不需要多个闭包的容量,那么您可以通过剥离数组来简化类 – 并且只是跟踪最后添加的成功和失败完成块.
现在,您所要做的就是定义一个函数,该函数生成一个新的ResultHandler实例,然后执行给定的异步请求,并在完成时调用invokeCallBACks方法:
func dorequest(input:Input) -> ResultHandler { let resultHandler = ResultHandler() doSomethingAsynchronous(resultHandler.invokeCallBACks) return resultHandler }
现在你可以像这样调用它:
dorequest(input).success {result in print("success,with:",result) }.failure { print("fail :(") }
唯一需要注意的是你的doSomethingAsynchronous函数必须将其完成块调度回主线程,以确保线程安全.
完整项目(添加使用示例):https://github.com/hamishknight/Callback-Closure-Chaining
以上是大佬教程为你收集整理的ios – Swift – 方法链接全部内容,希望文章能够帮你解决ios – Swift – 方法链接所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。