Svelte Worker

Cobain buat frontend menghitung bilangan faktorial dari banyak angka (gitu kalau nggak salah proses yang berat). Nah, itu kan nanti bakal "page not responding". Kalau pakai web worker, dia tetap lancar

Kayak gini alurnya:

index.svelte (postMessage) -> app.js (onmessage) (postMessage) -> index.svelte (onmessage)

Terus, bisa pakai import yang lain juga kalau di Vite:

import isEven from "is-even"

addEventListener("message", x => {
 postMessage(isEven(x.data) ? "Genap" : "Ganjil")
})

Di index.svelte:

<script>
import Worker from "./workernya?worker"

const app = new Worker
let angka
let hasil

$: if (angka){
 app.postMessage(angka)
}

app.addEventListener("message", x => {
 hasil = x.data
})
</script>

<input bind:value={angka}/>
{hasil}