Skip to content

Instantly share code, notes, and snippets.

@fson
Last active April 3, 2017 10:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fson/c2d9657a34dabc6b4ca71df973c7738e to your computer and use it in GitHub Desktop.
Save fson/c2d9657a34dabc6b4ca71df973c7738e to your computer and use it in GitHub Desktop.
Paluu.js – Redux
tuo onPelkistettyOlio paikasta 'ala-ajatusviiva/onPelkistettyOlio'
tuo $$havaittava paikasta 'merkki-havaittava'
vie vakio TekoTyypit = {
ALUSTA: '@@redux/ALUSTA'
}
vie oletus funktio luoVarasto(vähentäjä, esikuormitettuTila, tehostaja) {
jos (
sentyyppi esikuormitettuTila === 'funktio' &&
sentyyppi tehostaja === 'määrittämätön'
) {
tehostaja = esikuormitettuTila
esikuormitettuTila = määrittämätön
}
jos (sentyyppi tehostaja !== 'määrittämätön') {
jos (sentyyppi tehostaja !== 'funktio') {
heitä uusi Virhe('Odotin tehostajan olevan funktio.')
}
palauta tehostaja(luoVarasto)(vähentäjä, esikuormitettuTila)
}
jos (sentyyppi vähentäjä !== 'funktio') {
heitä uusi Virhe('Odotin vähentäjän olevan funktio.')
}
olkoon nykyinenVähentäjä = vähentäjä
olkoon nykyinenTila = esikuormitettuTila
olkoon nykyisetKuuntelijat = []
olkoon seuraavatKuuntelijat = nykyisetKuuntelijat
olkoon onLähettämässä = epätosi
funktio varmistaVoiMutatoidaSeuraavatKuuntelijat() {
jos (seuraavatKuuntelijat === nykyisetKuuntelijat) {
seuraavatKuuntelijat = nykyisetKuuntelijat.siivu()
}
}
funktio otaTila() {
palauta nykyinenTila
}
funktio tilaa(kuuntelija) {
jos (sentyyppi kuuntelija !== 'funktio') {
heitä uusi Virhe('Odotin kuuntelijan olevan funktio.')
}
olkoon onTilanut = tosi
varmistaVoiMutatoidaSeuraavatKuuntelijat()
seuraavatKuuntelijat.työnnä(kuuntelija)
palauta funktio peruTilaus() {
jos (!onTilanut) {
palauta
}
onTilanut = epätosi
varmistaVoiMutatoidaSeuraavatKuuntelijat()
vakio indeksi = seuraavatKuuntelijat.senIndeksi(kuuntelija)
seuraavatKuuntelijat.pleissaa(indeksi, 1)
}
}
funktio lähetä(teko) {
jos (!onPelkistettyOlio(teko)) {
heitä uusi Virhe(
'Tekojen pitää olla pelkistettyjä olioita. ' +
'Käytä mukautettua väliohjelmistoa tahdistamattomiin tekoihin.'
)
}
jos (sentyyppi teko.tyyppi === 'määrittämätön') {
heitä uusi Virhe(
'Teoilla ei voi olla määrittämätöntä "tyyppi" ominaisuutta.'
'Oletko kirjoittanut vakion väärin?'
)
}
jos (onLähettämässä) {
heitä uusi Virhe('Vähentäjät eivät voi lähettää tekoja.')
}
yritä {
onLähettämässä = tosi
nykyinenTila = nykyinenVähentäjä(nykyinenTila, teko)
} lopuksi {
onLähettämässä = epätosi
}
vakio kuuntelijat = nykyisetKuuntelijat = seuraavatKuuntelijat
kohti (olkoon i = 0; i < kuuntelijat.pituus; i++) {
vakio kuuntelija = kuuntelijat[i]
kuuntelija()
}
palauta teko
}
funktio vaihdaVähentäjä(seuraavaVähentäjä) {
jos (sentyyppi seuraavaVähentäjä !== 'funktio') {
heitä uusi Virhe('Odotin että seuraavaVähentäjä olisi funktio.')
}
nykyinenVähentäjä = seuraavaVähentäjä
lähetä({ tyyppi: TekoTyypit.ALUSTA })
}
funktio havaittava() {
vakio ulompiTilaa = tilaa
palauta {
tilaa(havaitsija) {
jos (sentyyppi havaitsija !== 'olio') {
heitä uusi TyyppiVirhe('Odotin havaitsijan olevan olio.')
}
funktio havaitseTila() {
jos (havaitsija.seuraava) {
havaitsija.seuraava(otaTila())
}
}
havaitseTila()
vakio peruTilaus = ulompiTilaa(havaitseTila)
palauta { peruTilaus }
},
[$$havaittava]() {
palauta tämä
}
}
}
lähetä({ tyyppi: TekoTyypit.ALUSTA })
palauta {
lähetä,
tilaa,
otaTila,
vaihdaVähentäjä,
[$$havaittava]: havaittava
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment