有人可以提供帮助,
我有一个NSMutablearray,其中包含大约1000个数据条目。
我想要做的是逐个浏览这些条目并将它们发送到带有HTTP请求的服务器。
然而,重要的是我一次只发送一个,所以我有以下伪代码
for(int i =0; i < array.count; i++)
{
[ServerLayer ServerUploadRow:[array objectAtIndex:i] : ^void (int ReturnValue, BOOL err){
if(err == true)
{
//Do some local stuff here.
}
}];
}
我理想的做法就是拥有以下内容
for(int i =0; i < array.count; i++)
{
//Wait here till i know that we not waiting on a block to complete
[ServerLayer ServerUploadRow:[array objectAtIndex:i] : ^void (int ReturnValue, BOOL err){
if(err == true)
{
//Do some local stuff here.
//Signify that we done
}
}];
}
函数ServerUploadRow只发送HTTP命令。
由于
答案 0 :(得分:2)
假设ServerUploadRow
异步运行,您可以让请求在前一个请求的完成块中启动下一个请求:
- (void)initiateRequestNumber:(NSInteger)index
{
[ServerLayer ServerUploadRow:array[index] : ^(int ReturnValue, BOOL err){
if (err == true) {
//Do some local stuff here.
} else {
NSInteger nextIndex = index + 1;
if (nextIndex < array.count) {
[self initiateRequestNumber:nextIndex];
} else {
// do whatever you want now that everything is done
}
}
}];
}
你从以下开始:
[self initiateRequestNumber:0];
如果您可以同时发出这些请求,或者更好地将所有这些请求合并到一个请求中,那么速度会快得多。我建议考虑重构您的网络服务,以便在可能的情况下启用此功能。但是按顺序提交1000个网络请求的速度非常慢(因为您将遭受1000次网络延迟)。