gpt4 book ai didi

ios - swift 午睡框架 : do something before sending requests

转载 作者:行者123 更新时间:2023-11-30 11:54:52 26 4
gpt4 key购买 nike

我正在尝试 Siesta 框架,我想在发送每个 API 调用之前调用一个函数。

我发现 decorateRequests(with:) 最适合我想要做的事情,但由于返回值必须是 Request,因此出现错误以下代码:

service.decorateRequests(with: { (res, req) -> Request in
if (res.url == self.tests.url) {
// do things..., then call req.repeated()
} else {
req.repeated()
}
})

但是,我遇到了这个错误:预期返回“Request”的闭包中缺少返回

知道如何让它发挥作用吗?谢谢

最佳答案

这里的基本 Swift 语法错误是,如果返回值闭包包含多个语句,则需要使用 return 关键字。

<小时/>

如果您需要做的是:

  1. 可以同步阻塞主线程,因为它很简短(例如记录请求、翻转测试期望),或者
  2. 需要在发送请求时启动,但请求可以继续并立即启动,而无需等待其完成

...那么就不必复杂了。在大家等待时完成您的简短任务,然后返回请求:

service.decorateRequests { req, res in
if res.url == self.tests.url {
doThatOtherThing() // blocks the main thread, which is fine if it’s brief
}
return req
}

另一方面,如果您需要在主线程继续时执行一些需要无限时间的操作,并且稍后发起该请求,则 Siesta currently doesn’t support that very well 。您可以通过编写 Request 协议(protocol)的自定义实现来完成此操作,但这既费力又容易出错。 Siesta 的 future 版本将提供更好的方法。

关于ios - swift 午睡框架 : do something before sending requests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47929822/

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