如何可靠地管理后台请求?

时间:2011-03-25 20:36:20

标签: iphone objective-c multithreading asihttprequest

我需要异步运行对http服务器的查询并处理响应。该查询实际上是一个非常大的带回调的方法调用链。这增加了复杂性,因为在调用链期间存在大量返回路径。

在完成当前请求之前,不应该开始新请求。

以下是概要:

  1. 某些线程调用[Foo poll]
  2. poll方法启动一些在后台运行的HTTP请求。在这种情况下ASIHTTPRequest。
  3. 请求最终调用[Foo onRequestComplete]来解析响应。调用错误[Foo onRequestError]时。这是第二条回归路径。
  4. 然后使用回调和更多返回路径对服务器进行更多调用。
  5. 最终将一些东西保存到磁盘上。
  6. 民意调查已完成
  7. 以下是捕获:在这些步骤中,在调查完成之前,应忽略(返回)或阻止对poll的调用。

    如何在另一个民意调查运行时确保poll功能阻止或无操作?

1 个答案:

答案 0 :(得分:2)

只需使用NSLock

[Foo poll]

if ([lock tryLock]) {
    // Do your stuff
}

[Foo onRequestComplete]

[lock unlock];