Iphone ASINetworkQueue中的ASIHTTPRequest:队列运行时取消请求

Iphone ASINetworkQueue中的ASIHTTPRequest:队列运行时取消请求,iphone,ios,asihttprequest,nsoperation,nsoperationqueue,Iphone,Ios,Asihttprequest,Nsoperation,Nsoperationqueue,我正在使用ASIHTTPRequest(我知道,我知道,它没有被维护——这没关系;它可以工作,这是我的应用程序的基础)通过ASINetworkQueue运行一系列HTTP请求 问题是,我的队列将有许多请求(数千个),并且需要一段时间才能运行。在应用程序运行期间,应用程序中的某些数据可能已更改,这将使某些请求变得不必要。我希望在每个请求运行之前对其运行一个验证方法,如果验证方法没有签出,那么它将取消该请求并继续下一个请求 现在,我正在使用以下代码创建ASIHTTPRequests: ASINetw

我正在使用ASIHTTPRequest(我知道,我知道,它没有被维护——这没关系;它可以工作,这是我的应用程序的基础)通过ASINetworkQueue运行一系列HTTP请求

问题是,我的队列将有许多请求(数千个),并且需要一段时间才能运行。在应用程序运行期间,应用程序中的某些数据可能已更改,这将使某些请求变得不必要。我希望在每个请求运行之前对其运行一个验证方法,如果验证方法没有签出,那么它将取消该请求并继续下一个请求

现在,我正在使用以下代码创建ASIHTTPRequests:

ASINetworkQueue *myQueue = [ASINetworkQueue queue];
NSURL *URL = [NSURL URLWithString:@"http://mywebsite.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setStartedBlock:^{
    NSLog(@"Request started: %@", request.url.absoluteString);
}];
[request setCompletionBlock:^{
    NSLog(@"Request completed: %@", request.url.absoluteString);
    // do some code here to clean up since it's finished
}];
[myQueue addOperation:request];
我目前的想法是在startedBlock中放入一些内容,这样就可以:

[request setStartedBlock:^{
    NSLog(@"Request started");
    if (![self myValidationMethod]) {
        [request cancel]; // <----------
    }
}];
[请求设置启动块:^{
NSLog(@“请求已启动”);
如果(![self myValidationMethod]){

[请求取消];//关于警告,您捕获块“容器”并形成一个循环…只需说:

__weak ASIHTTPRequest *rw = request;
在街区里用这个

至于启动块方法。对我来说听起来并不完美,但我不知道更好的方法…

ans这里: