2
幾次閱讀-flattenMap
的README後,我仍然不知道爲什麼這個代碼沒有按預期執行。我應該認爲塊內部的代碼會運行兩次,但根本沒有被打到。我錯過了一些非常愚蠢的事情嗎? (我正在使用v2.4.7)我也試過在我調用-flattenMap
之後發送這些值,以防止它是訂單。沒有骰子。這個簡單的`-flattenMap` ReactiveCocoa代碼有什麼問題?
RACSubject *test = [[RACSubject alloc] init];
[test sendNext:@1];
[test sendNext:@2];
[test sendCompleted];
[test flattenMap:^RACStream *(id value) {
NSLog(@"here: %@", value);
return [RACSignal return:@NO];
}];
Facepalm。是的,這是有道理的,並感謝一噸。所以爲了確保我的條款是正確的,這種行爲反映了它是一個熱門信號,還是完全不同的概念? – eremzeit
@eremzeit我相信這是正確的,但倒置。你用flattenMap得到的信號是* cold *信號。直到有人訂閱它,它纔會做任何事情。當他們(或者應該)像這樣完全純淨時,討論熱信號和冷信號是很奇怪的,但是 - 我認爲一個更合適的例子就像網絡請求。如果您創建表示GET請求的熱門信號,則無論是否有人訂閱該請求,都會執行該請求。然而,一個冷的GET信號會等待某人「請求」請求的結果以啓動請求。 –