我正在尝试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()
}
})
但是,我有这个错误:
Missing return in a closure expected to return 'Request'
知道如何让它发挥作用吗?感谢
答案 0 :(得分:0)
这里基本的Swift语法错误是,如果返回值的闭包包含多个语句,则需要使用return
关键字。
如果您需要做的事情是:
......那就不必复杂了。在每个人等待时执行您的简短任务,然后返回请求:
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 {{3} }。您可以通过编写Request
协议的自定义实现来实现,但这很费力且容易出错。 Siesta的未来版本将采用更好的方法。