我想根據第一個值對兩個流進行分組和合並。用一個具體例子說明,如何根據第一個對兩個流進行分組和合並?
每當第一流變化,我想值與所述第二流結合但跳過緊跟其後的值(即圖中的值1,圖3和6) 。
我在iOS上使用ReactiveCocoa,但歡迎使用其他反應性框架的示例。
我想根據第一個值對兩個流進行分組和合並。用一個具體例子說明,如何根據第一個對兩個流進行分組和合並?
每當第一流變化,我想值與所述第二流結合但跳過緊跟其後的值(即圖中的值1,圖3和6) 。
我在iOS上使用ReactiveCocoa,但歡迎使用其他反應性框架的示例。
我在ReactiveCocoa當前實現:
var cook = MutableProperty("")
var ingredient = MutableProperty("")
cook.signal.observeNext { cook in
print(">", cook)
}
let skipFirst = cook.signal
.flatMap(.latest) { cookValue in
return ingredient.signal
.map { ingredientValue in
"\(cookValue) \(ingredientValue)"
}
.skip(first: 1)
}
skipFirst.observeNext { str in
print(">>", str)
}
// Send values
cook.value = "grill"
ingredient.value = "asparagus"
ingredient.value = "beef"
cook.value = "fry"
ingredient.value = "ice cream"
ingredient.value = "donut"
ingredient.value = "shoe"
cook.value = "steam"
ingredient.value = "egg"
ingredient.value = "lettuce"
此打印:
> grill
>> grill beef
> fry
>> fry donut
>> fry shoe
> steam
>> steam lettuce
但是,這意味着如果我也希望用每個組的第一個值,我不得不重複flatMap
轉型,這似乎不太乾。
cook.signal
.flatMap(.latest) { cookValue in
return ingredient.signal
.map { ingredientValue in
"\(cookValue) \(ingredientValue)"
}
.take(first: 1)
}
.observeNext { str in
print("**>", str)
}
在JavaScript中,它會是這樣(不,雖然測試):
const result$ = a$.flatMapLatest(a => b.skip(1).map(b => {a,b}))
什麼,這是應該做的:
約束條件有:
尼斯圖。