3
我使用Kefir.js進行反應式編程,但是我遇到了一些麻煩。我有一個裝有N個傳感器(溫度,壓力,時間......)的設備,如果我將傳感器表示爲流,我認爲這將是個好主意。所以我結束了這段代碼:反應式編程的初學者問題
function temperatureSensor(pin) {
let stream = Kefir.emitter()
if(pin > 12) {
stream.error(new Error(`Board has no pin ${pin}.`))
}
setInterval(() => {
stream.emit(readTemperature(pin))
}, 500)
return stream
}
Kefir.zip([
temperatureSensor(1),
temperatureSensor(42) // Invalid pin, should call .error
]).onValue((state) => {
// do something with sensor values
}).onError(() => {
console.error('An error occurred!')
})
有幾個問題與此代碼:
.onError
將永遠不會被調用(.onError
.error
後附的叫法)。也許使用屬性,而不是流,但我不知道怎麼....zip
不是一個理想的功能,我需要類似的東西:
同步傳感器,叫.onValue,然後.onValue每次當傳感器值改變
a: ----20------------21--------------
b: -------25--------------------24---
ab: --------•----------•----------•---
[20, 25] [21, 25] [21, 24]
時間謝謝你的任何建議。
是的,我認爲一個屬性會更適合測量連續值的傳感器。 – Bergi