andywer / andywer/threads.js

Observable values not being returned until the process finishes

Abierto
#473 3 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
3.5k
Forks
173
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Hi, I'm trying to train a neural network with brain.js in a thread (using Node v20, I tried v18 as well), and I can't seem to get updates from the Observable until the entire thread has finished it's work... I've reproduced the issue in the simplest form here:

```js
// main.js
import { spawn, Worker, Thread } from 'threads'

(async function() {
let worker = await spawn(new Worker("./worker.js"))
worker.longRunningCode().subscribe(progress => console.log(progress))
})()
```

```js
// worker.js
import { expose } from "threads/worker"
import { Observable } from "observable-fns"

expose({
longRunningCode() {
return new Observable(observer => {
observer.next("Started")
for (let i = 0 ; i < 5 ; i++) {
observer.next("Progress " + i)
let startedAt = Date.now()
while (Date.now() - startedAt < 1000) { /* long running code */ }
}
observer.next("Completed")
observer.complete()
})
}
})
```

I would expect to see Progress 0, Progress 1 etc appearing 1 second apart in the console log. Instead, nothing happens for 5 seconds and then I get all the logs at once at the end...

I'm not sure if I'm doing something wrong, or if this is a bug?

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.