我有一個信號,基本上它是在使用NSRULSession請求配置。當我做一個subscribe的時候,它的請求完全正確,但是第二次這個請求不再需要。我怎麼能避免它?在ReactiveCocoa上避免重複的http請求
0
A
回答
0
一次性信號可以通過take:
運營商進行。你只需要傳遞一個參數來獲得執行信號所需的時間。經過這樣的執行量之後,該網關將完全關閉,subscribeNext:
塊中將不再有數據傳遞。你的情況,這一數額將等於1
RACSignal *requestConfigurationSignal = ...
[[requestSignal
take:1]
subscribeNext:^(id value){
NSLog(@"Request in progress")
}]
+0
這聽起來像他們希望能夠多次訂閱,但只能進行一個Web請求。也就是說,他們希望緩存結果。這是重播操作員有用的地方。 – powerj1984
1
你的信號,在每次訂閱,除非你做一些明確的,以防止到時候會做其工作。這聽起來像你想要的是replayLast
運營商。該操作員將緩存信號的最後發射值,並在信號再次訂閱時發出,而不是重做初始工作。
在這裏「重播」運營商閱讀起來: http://spin.atomicobject.com/2014/06/29/replay-replaylast-replaylazily/
0
使用屬性和動作,其值綁定到該屬性。然後僅根據需要觸發該操作以刷新該屬性的值。
你能提供與問題相關的源代碼嗎? – skyylex