2012-10-08 9 views
9

Sto usando Node.js per passare attraverso quello che potrebbe eventualmente essere un bel array di post.Loop lunghi in Node.js: cedendo utilizzando i timer?

Se stavo facendo qualcosa di simile utilizzando lato client JavaScript, vorrei utilizzare i timer as explained here in modo da non bloccare il thread.

La mia domanda è: "È ancora un lato del server di pratica audio?" o "Devo affrontare il problema in modo diverso?"

+0

Potrebbe essere potenzialmente peggio sul server perché potrebbe bloccare tutti, non solo un utente. –

risposta

14

Il modo corretto per farlo in node.js è suddividere il lavoro in blocchi e utilizzare process.nextTick per accodare il blocco successivo al completamento di quello corrente. In questo modo permetti ad altre callback in coda di essere eseguite tra ogni blocco di lavoro.

UPDATE: come di Node.js 0,10, setImmediate dovrebbe tipicamente essere utilizzati al posto di process.nextTick per questo scopo, come setImmediate rendimenti per il ciclo degli eventi per assicurarsi che I/O è non essere morto di fame, ma process.nextTick non lo fa.

1

Il suggerimento di JohnnyHK è valido. Considererei i web worker quando l'attività può essere completata in un secondo momento (es .: aggiunta a una coda).

-2

Dai un'occhiata alla libreria async. Fornisce la versione asincrona dei soliti metodi di raccolta (mappa, filtro, ogni ...). AFAIK, l'elaborazione in modo asincrono dell'array non bloccherà altri processi né utenti.

Problemi correlati