@spirinvladimir/signal
v1.0.0
Published
micro reactive framework
Downloads
3
Readme
:satellite: Signal
micro reactive framework
Install
npm install spirinvladimir/signal
API
.signal(emitter)
var {signal} = require('signal')
signal(emit => [1 ,2 ,3].forEach(_ => setTimeout(emit, 0, _))).onValue(console.log)
/*
1
2
3
*/
.combine([signals], reducer)
var {signal, combine} = require('signal')
combine(
[
signal(emit => [1, 3].forEach(_ => setTimeout(emit, _ * 10, _))),
signal(emit => [2, 4].forEach(_ => setTimeout(emit, _ * 10, _))),
],
(a, b) => Math.max(a || -Infinity, b || -Infinity)
).onValue(console.log)
/*
1
2
3
4
*/
.map(next)
var {signal, map} = require('signal')
map(
signal(emit => [1, 2, 3].forEach(_ => setTimeout(emit, 0, _))),
(value, emit) => emit(value + 1)
).onValue(console.log)
/*
2
3
4
/*
Example UI calculator with operation +
var {signal, combine, map} = require('signal')
var a = document.getElementById('a')
var b = document.getElementById('b')
var c = document.getElementById('c')
map(
combine(
[
signal(emit => a.onchange = () => emit(a.value)),
signal(emit => b.onchange = () => emit(b.value))
],
(a, b) => [a, b]
),
([a, b], emit) => a !== undefined && b !== undefined && emit(a + b)
).onValue(value => c.value = value)