gpt4 book ai didi

cocoa - 按下按钮后从 rac_GET 创建 RACSignal,取消之前的请求

转载 作者:行者123 更新时间:2023-12-03 17:11:42 26 4
gpt4 key购买 nike

完成本教程后,我正在尝试进行 react 性 cocoa 的第一个练习。目标是让一个按钮使用 AFNetworking 从互联网上下载一些东西,这些 ReactiveCocoa wrappers .

我想出了这个:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = nil;
RACSignal *buttonSignal = [self.stepperButton rac_signalForControlEvents:UIControlEventTouchUpInside];
RACSignal *getSignal = [buttonSignal map:^id(UIButton *button) {
return [manager rac_GET:@"https://farm3.staticflickr.com/2815/13668440264_e6403b3100_o_d.jpg" parameters:nil];
}];
RACSignal *latestSignal = [getSignal switchToLatest];
[latestSignal subscribeNext:^(id x) {
NSLog(@"x: %@",x);
}];

这似乎做了一些我想要的事情:

  1. 它根据请求从 flickr 下载图像
  2. 当点击按钮太快时,它会取消之前的请求(switchToLatest 是这里的关键)

但它在其他方面失败了:

  1. 我似乎无法在 subscribeNext 中获得有效回复。 x 始终为 null
  2. 每当请求失败时,信号就会进入错误状态,并且按下按钮不会再触发任何新的 GET。

我想我在这里错过了很多东西,因为我是 react 性 cocoa 的新手,但也许有人愿意给出提示,让我朝着正确的方向前进?

还有其他我看不到的方法吗?

最佳答案

这似乎有效:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = nil;
RACSignal *buttonSignal = [self.stepperButton rac_signalForControlEvents:UIControlEventTouchUpInside];
RACSignal *getSignal = [buttonSignal map:^id(UIButton *button) {
return [[manager rac_GET:@"https://farm3.staticflickr.com/2815/13668440264_e6403b3100_o_d.jpg" parameters:nil] catch:^RACSignal *(NSError *error) {
NSLog(@"catch %@",error);
return [RACSignal empty];
}];
}];
RACSignal *latestSignal = [getSignal switchToLatest];
[latestSignal subscribeNext:^(NSData *data) {
NSLog(@"dowloaded %d bytes",data.length);
}];

感谢Stackoverflow类似问题!功能强大的东西。

捕获应该在 rac_GET 上。之前我一直在尝试使用 catch 来处理 buttonSignal 管道上的事情。

x 始终为 null 的原因是因为我没有在 manager 上设置序列化器。

我想过删除这个问题,但也许还有人对解决方案有评论?

关于cocoa - 按下按钮后从 rac_GET 创建 RACSignal,取消之前的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22932123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com