我需要对 http 服务器异步运行查询并处理响应。该查询实际上是一个相当大的带有回调的方法调用链。这增加了复杂性,因为调用链中有很多返回路径。
在当前请求完全完成之前,不应启动新请求。
以下是总体概要:
- 某些线程调用
[Foo poll]
。 poll
方法启动几个在后台运行的 HTTP 请求。在本例中为 ASIHTTPRequest。- 请求最终会调用
[Foo onRequestComplete]
来解析响应。发生错误时,调用[Foo onRequestError
]。这是第二条返回路径。 - 然后,通过回调和更多返回路径对服务器进行更多调用。
- 最终将一些内容保存到磁盘。
- 投票已完成
这里有一个要点:在这些步骤中,对 poll
的调用应该被忽略(返回)或阻止,直到轮询完成。
如何确保在另一个轮询运行时 poll
函数被阻止或无操作?
最佳答案
只需使用NSLock
即可。
在[Foo poll]
中:
if ([lock tryLock]) {
// Do your stuff
}
在[Foo onRequestComplete]
中:
[lock unlock];
关于iphone - 如何可靠地管理后台请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5437857/