gpt4 book ai didi

http - 如何构造 HTTPBuilder 中使用的委托(delegate)/响应处理程序模式?

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:11:21 24 4
gpt4 key购买 nike

我想编写一个异步函数,它接受一个带有像 HTTPBuilder.request 这样的处理程序的闭包。函数是怎么写的?

当我调用函数时,它看起来像这样:

// calling my function now - we'll process the results when status is available...
myFunction(arg1, arg2) {
status.success = { result ->
println 'cool'
}
status.failure = { result ->
println 'not cool'
}
}

最佳答案

myFunction 的“主体”实际上是 Closure 类型的第三个参数。当你声明它时,它实际上会有三个参数:arg1arg2,还有一个包含主体。

myFunction 中,使用委托(delegate)调用主体闭包。该委托(delegate)持有 status.successstatus.failure 事件处理程序闭包。然后执行异步操作并捕获结果。最后,调用适当的结果处理程序闭包。像这样的函数的框架看起来像这样:

def myFunction(arg1, arg2, Closure body) {
def delegateMap = [status:[:]]
body.delegate = delegateMap
body.call()

// start async process
Thread.start {
def result = doAsyncStuff()
if (isSuccess(result) && delegateMap.status.success) {
delegateMap.status.success.call(result)
}
else if (isFailure(result) && delegateMap.status.failure) {
delegateMap.status.failure.call(result)
}
}
}

关于http - 如何构造 HTTPBuilder 中使用的委托(delegate)/响应处理程序模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12962657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com