andywer / andywer/threads.js

Observable values not being returned until the process finishes

Aberta
#473 3 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
TypeScript
Estrelas
3.5k
Forks
173
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

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?

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.