Comments 9
А почему не comlink ?
привет! если честно, не видел этот пакет. Изначально создавал шину для Observable из RxJs для проекта на Angular. Я так понял в comlink нет этой поддержки. С Typescript он окей работает?
Какой поддержки нет? Comlink написан на Typescript
https://github.com/GoogleChromeLabs/comlink#typescript этот проект - обертка для упрощения работы с WebWorkers. Связать с RxJs не проблема, https://github.com/ralscha/blog2019/blob/09dc88d263691469c6ce44632627780e63663fa3/webworkers/angular-comlink/package.json#L22 например даже так
А кроме лозунгов, будет показано в чём выигрыш например по заявленному "...Улучшение производительности..." или "...Работа с большими данными..."?
Функция для выполнения переданной функции с помощью веб-воркера:
/**
@example
const expensiveFn = () => {
let result = 0
for (let i = 0; i < 10000; i++) {
for (let j = 0; j < 700; j++) {
for (let k = 0; k < 300; k++) {
result = result + i + j + k
}
}
}
return result
}
worker(expensiveFn).then(console.log) // 11546850000000
*/
const worker = (fn: Function) => {
const worker = new Worker(
URL.createObjectURL(
new Blob([`postMessage((${fn})())`], {
type: 'application/javascript; charset=utf-8',
}),
),
)
return new Promise((res, rej) => {
worker.onmessage = ({ data }) => {
res(data)
worker.terminate()
}
worker.onerror = (err) => {
rej(err)
worker.terminate()
}
})
}
export default worker
Шина между Веб-воркерами и основным потоком. Ускоряем работу JavaScript