问题标签 [racsignal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
224 浏览

ios - 如何从 iOS 中的块创建同步方法

从 Firebase 检索数据后,我试图返回一个 NSArray。所以由于几个原因,我需要让这个方法是同步的而不是异步的。我试过使用 RACSignal,但我不确定如何将它转换为 NSArray。这是我到目前为止所拥有的:

据我所知,Firebase 只有用块检索数据的方法。

0 投票
1 回答
366 浏览

swift - ReactiveCocoa 对成员 RACSignal 的模糊引用

我正在尝试返回一个RACSignal可以在我的 Objective-C 代码中使用的,我尝试了各种方法。前任:

也是这样。

XCode总是说同样的话:

对成员 toRAC 信号的模糊引用

我的 podfile 看起来像这样:

我有 Xcode 7.3 版

也试过这个:

同样的结果。

0 投票
0 回答
105 浏览

ios - ReactiveCocoa RACO观察自我模型问题

我的 ViewController 中有一个模型(例如@property (nonatomic, strong) Model *model;

有 2 个属性 ( property1, property2)。

我试图通过RACObserve宏观察这些属性,然后使用combineLatest

你能解释一下为什么如果我使用RACObserve(self.model, property1)它不会触发combineLatest并且在subscribeNext. 但如果我改为RACObserve(self, model.property)then 效果很好。我无法理解这。你能帮帮我吗。提前致谢。

0 投票
0 回答
162 浏览

ios - 如何取消 NSURLSessionDataTask 'Inside' A RACSignal

我正在使用 Reactive Cocoa 将多个网络请求合并和收集在一起(作为 RACSignals),如下所示:

每个单独的 RACSignal 都是这样创建的:

这一切都很好。我的问题是:有没有办法取消NSURLSessionDataTask单个 RAC 信号中的实际请求(即 )?我subscribeNext:在合并信号上使用了一个块,它返回一个RACDisposable- 我可以处理它,但这适用于整个合并操作而不是单个信号。我在看类似的东西,takeUntil:但这被描述为“释放信号”,我不确定这是否会反过来取消它包含的请求。任何帮助表示赞赏。

0 投票
0 回答
79 浏览

objective-c - RACSignal:从不调用信号

我有以下由另一个信号调用的代码:

我的问题是信号对象永远不会被调用并且代码永远不会运行。它直接进入最后一条语句

并且信号中的代码永远不会被执行。有人可以帮忙吗?

我尝试在 RACSignal 定义的末尾添加一个 [subscriber sendNext: signal] ,但这没有任何区别。

上一个方法由下面的这个调用:

0 投票
1 回答
189 浏览

objective-c - RACSignal:处理不兼容的块指针类型

我是 Reactive Cocoa 的新手,我想知道是否有人可以帮助我解决这个问题:

这是给我带来麻烦的代码片段:

这段代码是从一个 RACsignal 对象中调用的,其方法与定义如下:

以下代码行:

生成错误:

0 投票
1 回答
72 浏览

objective-c - RACSignal:RACSignal 代码未执行

有没有愿意帮助我解决这个问题的灵魂?

这是我的场景:

我需要将表单附件上传到服务器。所以这里是步骤:

  1. 使用 Web 服务从服务器检索附件标头。

  2. 将附件标头与本地附件匹配。

  3. 将附件上传到服务器。

问题:

使用 RACSignal 我可以成功获取附件标头,但是当需要使用 NSArray 上传附件时,UploadFormItemAttachments 方法的内部 RACSignal 将不会执行。

附加信息:

这是显示如何处理 RACSignals 的代码片段。BatchSignal 永远不会执行!:

这是遍历附件数组并将其上传到服务器的方法:

0 投票
1 回答
824 浏览

swift - 从 RACSignal 迁移到 ReactiveSwift 或 RAC5

我是 Swift 的新手,这就是为什么我是 Reactive Cocoa v5 或 Reactive Swift 的新手。

以前我将 RACSignal 与 RAC 2.x 一起使用,我喜欢做这样的事情:

在这里我喜欢它取消一次性请求,我也可以通过调用dispose返回信号的方法来手动取消它。

我对 Reactive Swift 中的所有这些东西有点困惑,比如 SignalProducers 等。

请举例说明如何使用最新的 Swift/ReactiveSwift/ReactiveCocoa 版本实现相同的功能。主要要求是能够在任何我想要的地方取消请求(或处置信号),并在处置时自动取消请求

0 投票
1 回答
1910 浏览

ios - Reactive Cocoa 5 和 ReactiveSwift 网络请求处理

我试图弄清楚是否可以使用 ReactiveSwift 和 RAC5 实现适合我需要的网络请求处理。

从 RACSignal 迁移到 ReactiveSwift 或 RAC5主题下,有人告诉我它可以使用 SignalProducer 完成,但深入研究它并没有给我预期的结果

所以,我想要:
1. 每次 textField 发送请求中的文本更改(按关键字搜索)。
2.一旦用户关闭当前的ViewController,当前的请求应该会自动取消
3.一旦关键字改变,可以取消请求

这是我所拥有的

这是生产者初始化程序

注意:
1. 有时我想有一个“两个处理程序块”,它会在成功和错误时被调用,所以像隐藏加载指示器这样的事情可以在那个块下完成。

这里有几个问题/问题:
1. 一旦我关闭 VC(解除操作),observeValue 处理程序就会再调用一次。它可以通过添加来修复.skipRepeats(),但我想这只是一种解决方法,而不是一个确切的解决方案。
如果我关闭 VC 2 completed,即使我在调用 3 后立即手动调用它,我也不希望这个观察者处于活动状态send(error: error)
。如果请求仍在加载并且我关闭 VC,它不会自动处理,这对我来说看起来很奇怪。我认为一旦 viewController 失去对 signalProducer 的引用,就会自动调用 dispose 块。即使调用VCself.fetchSignalDisposable?.dispose()deinit方法也不会取消请求。它仍然完成请求和调用value导致错误访问错误崩溃的处理程序

我的个人需求是:
1. 在请求成功和失败的情况下都将调用某种“两者”块2. 关闭 VC 3
后,必须删除 textFields 文本值的所有观察者,并且不再处于活动状态。
关闭VC时必须立即取消网络请求

PS:当然,感谢所有阅读这篇巨文并花时间帮助我的人!

0 投票
2 回答
705 浏览

ios - ReactiveCocoa 5,ReactiveSwift 网络子请求处理和最佳实践

我正在尝试找到最佳实践来处理从父请求中获得的每个值的多个子请求。我正在尝试使用与此处相同的逻辑 - Reactive Cocoa 5 and ReactiveSwift network requests handling,但有一些问题。

我们拥有和需要什么:
1. 带有无限滚动处理程序 (SVPullToRefresh) 的 TableView
2. 每次调用处理程序时获取对象列表
3. 从响应中为每个对象发送“子请求”

注意:
1. 一旦 viewController 关闭(调用 deinit),所有请求(父 + 子请求)都应该被取消
2. 我需要能够随时取消父请求。这也应该取消所有子请求。

我目前拥有的

我知道我在“无限处理程序”中所做的有点像“胶带”,但我是 ReactiveSwift 的新手......

所以,如你所见,我使用 tableView 进行分页。我正在为每个页面获取对象列表。然后对于响应中的每个项目,我需要使用请求#2 获取附加信息。


流程和问题:
1.当然我想摆脱tempMutableProperty并以某种方式开始新parent request的没有某种代理
2.每个都sub-request应该是独立的,这意味着我想让value/error处理程序分别为每个调用sub-request,而不是像它等待所有 10子请求,然后调用成功处理程序并收集所有 10 个响应。此外,某些特定子请求的失败不应影响其他正在运行的子请求
3.用户可以更改他的搜索请求,而无需等待整个请求过程完成。这意味着一旦用户更改了一些参数,我将清除所有项目,我需要parent request在所有项目中取消sub-requests并重新开始这一切。
4.除了#2,有时用户可以向下滚动以获取新的项目部分。这将意味着 newparent request应该开始,但是sub-requests从之前的响应parent request应该继续工作
5.所有请求都应该在 取消self.deinit,所以这一切都应该只在 期间有效self.lifetime,但我不确定放置此参数的正确位置是什么

我不确定如果不将一次性/信号存储为 self 的属性,这一切是否可能,所以如果sub-request以某种方式存储为属性,这不是问题。


谢谢大家的帮助