是否有用于验证仍然需要异步请求的标准模式?
Is there a standard pattern for verifying an async request is still needed?
在移动应用程序中,我们不能(或不应该)在主线程上发出网络请求。我们通常通过在结果可用时在主线程上执行的回调或闭包来取回请求的结果。由于用户可能已经移动或不再需要结果,例如它可能是一个乱序到达的旧请求,我们需要检查回调或闭包中的动作是否应该根据当前状态实际执行应用程序。
在 iOS 和 swift 的情况下,我计划使用闭包,所以我正在考虑为我发出的每个请求做这样的事情。
假设我有一个看起来像这样的方法
func makeRequest(identifier: String, handler: (ident: String, result: ResultObject) -> Void) {
...
...
handler(identifier, result)
}
除了将在结果可用时调用的处理程序之外,我还将传入一个标识符的值,该值将在调用时依次传递给处理程序。闭包将在创建请求时捕获对标识符的引用,因此它能够在实际调用处理程序时获取引用所持有的值。所以它看起来像这样,其中 ident 是发出请求时 commandIdentifier 的值,闭包内的 commandIdentifier 将是闭包实际执行时的值。
commandIdentifer = "some unique identifier"
makeRequest(commandIdentifer) { ident, result in
if commandIdentifier == ident {
// do something
} else {
// do something else
}
}
我觉得这里没有什么特别的,所以我的问题是:
这是一个通用模式吗?如果是,我在哪里可以找到它的任何文档?
如果有一些创建标识符的通用方法以及如何在主线程中关联它的引用,我特别感兴趣。
此外,如果我完全错了,这不是一个好方法,我也想听听
我以前几乎完全使用过这种方法。我使用整数标识符,并在发出新请求时递增它。这样,如果待处理的请求被新请求取代,您只需将陈旧的响应放在地板上即可。
在移动应用程序中,我们不能(或不应该)在主线程上发出网络请求。我们通常通过在结果可用时在主线程上执行的回调或闭包来取回请求的结果。由于用户可能已经移动或不再需要结果,例如它可能是一个乱序到达的旧请求,我们需要检查回调或闭包中的动作是否应该根据当前状态实际执行应用程序。
在 iOS 和 swift 的情况下,我计划使用闭包,所以我正在考虑为我发出的每个请求做这样的事情。
假设我有一个看起来像这样的方法
func makeRequest(identifier: String, handler: (ident: String, result: ResultObject) -> Void) {
...
...
handler(identifier, result)
}
除了将在结果可用时调用的处理程序之外,我还将传入一个标识符的值,该值将在调用时依次传递给处理程序。闭包将在创建请求时捕获对标识符的引用,因此它能够在实际调用处理程序时获取引用所持有的值。所以它看起来像这样,其中 ident 是发出请求时 commandIdentifier 的值,闭包内的 commandIdentifier 将是闭包实际执行时的值。
commandIdentifer = "some unique identifier"
makeRequest(commandIdentifer) { ident, result in
if commandIdentifier == ident {
// do something
} else {
// do something else
}
}
我觉得这里没有什么特别的,所以我的问题是:
这是一个通用模式吗?如果是,我在哪里可以找到它的任何文档?
如果有一些创建标识符的通用方法以及如何在主线程中关联它的引用,我特别感兴趣。
此外,如果我完全错了,这不是一个好方法,我也想听听
我以前几乎完全使用过这种方法。我使用整数标识符,并在发出新请求时递增它。这样,如果待处理的请求被新请求取代,您只需将陈旧的响应放在地板上即可。